Projets
Pages enfant
  • 3.3.3 Gestion de la structure de la base de données

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

Création de la structure de la base de données

esup-ommons V2 n'offre pas une fonctionnalité particulière pour créer la structure de la base de données. Par contre, il Il est possible de configurer la couche JPA pour l'autoriser à automatiquement créer (où mettre à jour) la structure de la base de données à partir du mapping objets/relationnel. Ceci notamment parce que nous utilisons l'implémentation Hibernate de JPA qui offre cette fonctionnalité.

Pour activer activer la fonctionnalité il faut dans le fichier resources/properties/dao/dao.xml, positionner la propriété generateDdl à true :

Bloc de code
	<bean id="jpaVendorAdapterentityManagerFactory"
		class        class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
		<propertyLocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="${datasource.bean}" />
        <property name="jpaVendorAdapter">
            <bean>
                <property name="showSql" value="true" />
		<property                <property name="generateDdl" value="true#{ systemProperties[generateDdl]?:false }" />
		<property                <property name="database" value="${jpa.database.type}" />
	</bean>

...

            </bean>
        </property>
        <property name="persistenceXmlLocation" value="classpath*:META-INF/example-dao-persistence.xml" />
        <property name="jpaProperties" ref="jpaProperties" />
    </bean>

En  fait, on voit ici que la propriété generateDdl du jpaVendorAdapter est évaluée via une EL Spring. Par défaut, sa valeur vaudra false. Ceci permet de NE PAS mettre à jour la base de données à chaque démarrage de l'application mais de le faire explicitement.

Pour cela ESUP-Commons propose un module batch dont une des commande sert à initialiser la base de données. L'appel à cette commande positionne la variable d'environnement generateDdl à true ce qui fait que la propriété generateDdl du jpaVendorAdapter est elle même positionnée à true.

La commande batch se lance via :

Bloc de code
languagebash
jar <appli>-batch-<version>.jar init-db

Mise à jour de la structure de la base de données

...

Le principe est le même que pour la création de la base de données sauf que la commande à lancer est :

Bloc de code
languagebash
jar <appli>-batch-<version>.jar upgrade-db