J'ai un tas de classes annotées avec des annotations d'hibernation. J'utilise Maven, Hibernate et Spring. Comment puis-je générer le schéma de base de données en utilisant hbm2ddl de hibernate3-maven-plugin?Génération de schéma d'annotations Maven + Hibernate
5
A
Répondre
4
un court exemple comme ceci:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<components>
<component>
<name>hbm2ddl</name>
<implementation>jdbcconfiguration</implementation>
</component>
</components>
<componentProperties>
<drop>true</drop>
<configurationfile>/src/main/resources/hibernate.cfg.xml</configurationfile>
</componentProperties>
</configuration>
<dependencies>
<dependency>
<groupId>jdbc.artifact.groupid</groupId>
<artifactId>jdbc-driver</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
et bien sûr la lecture du documentation aurait aidé.
4
Supposons que votre projet a la structure suivante:
. ├── pom.xml └── src ├── main │ ├── java │ │ └── com │ │ └── stackoverflow │ │ └── Foo.java │ └── resources │ └── META-INF │ └── persistence.xml └── test └── java
Que le persistence.xml
contient les éléments suivants:
<persistence>
<persistence-unit name="MyPu" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>com.stackoverflow.Foo</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.connection.driver_class" value="org.h2.Driver"/>
<property name="hibernate.connection.url" value="jdbc:h2:mem:Q4029456-1.0-SNAPSHOT"/>
<property name="hibernate.connection.user" value="APP"/>
<property name="hibernate.connection.password" value="APP"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
</properties>
</persistence-unit>
</persistence>
la configuration suivante exporterait le schéma dans le cadre de la construction:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.stackoverflow</groupId>
<artifactId>Q4029456</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.4.0.GA</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.2.144</version>
</dependency>
...
</dependencies>
<repositories>
<repository>
<id>repository.jboss.org-public</id>
<name>JBoss repository</name>
<url>https://repository.jboss.org/nexus/content/groups/public</url>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<components>
<component>
<name>hbm2ddl</name>
<implementation>jpaconfiguration</implementation>
</component>
</components>
<componentProperties>
<drop>true</drop>
<!-- optional, but useful for later inspection -->
<outputfilename>schema.ddl</outputfilename>
<persistenceunit>MyPu</persistenceunit>
</componentProperties>
</configuration>
<executions>
<execution>
<phase>process-classes</phase>
<goals>
<goal>hbm2ddl</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.2.144</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
Remplacer le jpaconfiguration
et le persitence.xml
par annotationconfiguration
et un src/main/resources/hibernate.cfg.xml
si vous n'utilisez pas JPA.
Ci-dessous un extrait de la sortie obtenue:
$ mvn process-classes [INFO] Scanning for projects... ... [INFO] --- hibernate3-maven-plugin:2.2:hbm2ddl (default) @ Q4029456 --- ... drop table Foo if exists; create table Foo (id bigint generated by default as identity, name varchar(255), primary key (id)); ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ ...
Questions connexes
- 1. Génération d'UUID via Maven
- 2. Automatiser SQL Server DB schéma Schéma Génération
- 3. Hibernate | Identifiant génération Exception
- 4. génération de schéma MySql avec NHibernate
- 5. JPA, MySQL, Hibernate & Maven Skeleton
- 6. Génération de schéma à partir de hsql
- 7. Maven: schéma de dénomination d'artefact non officiel?
- 8. Personnalisation de la génération de séquence Hibernate
- 9. Utilisation de Maven dans Hibernate Tutoriel
- 10. Génération de la couche de service avec Hibernate
- 11. Classe de schéma SQL pour Hibernate
- 12. HIbernate - HBM.xml Génération automatique à partir de DB Schema
- 13. oracle hibernate + maven dependenciesm dbcp.basicdatasource exception
- 14. Hibernate Core daily/weekly build Référentiel Maven
- 15. Webservices avec Maven, Spring et Hibernate
- 16. Génération de schéma SQL à partir de XML
- 17. Impossible de créer le schéma à partir de Hibernate
- 18. Exclusion de certaines tables du schéma Fluent Nhibernate Génération
- 19. La génération de schéma Datanucleus ignore la directive "inheritance strategy ="
- 20. Table génération de schéma provoque une erreur SQL
- 21. Génération d'objets de valeur ActionScript à partir d'un schéma xsd
- 22. Ai-je besoin de Maven pour utiliser Hibernate?
- 23. Impossible de faire fonctionner JPA2 avec Hibernate et Maven
- 24. Problème de dépendance Hibernate avec l'analyse maven et xml
- 25. Mise à jour de l'archétype Spring/Hibernate dans Maven?
- 26. Erreur de mise à jour du schéma HIbernate
- 27. paramètre de schéma Hibernate ne fonctionne pas dans l'annotation @SequenceGenerator
- 28. requête de génération Hibernate Annotations qui produit SQLGrammarException
- 29. Est-il possible d'utiliser la génération automatique et la génération de schéma avec Fluent NHibernate?
- 30. Génération d'un site maven incluant un rapport Cobertura
jdbcconfiguration ne fonctionnera pas avec annotations. –
Bien sûr que non. Désolé ... il suffit de le remplacer par: annotationconfiguration – khmarbaise