usar tools tablas persistencia mapear librerias engineering ejemplo descargar como hibernate maven-2 hibernate-tools hbm2java

hibernate - tools - Cómo configurar hbm2java y hbm2dao para agregar el nombre del paquete a las clases generadas



mapear tablas hibernate eclipse (2)

Estoy intentando configurar hbm2java con maven para generar clases POJO y objetos DAO. Uno de los problemas con los que estoy tratando es que los nombres de los paquetes no se generan. Estoy usando el siguiente pom para eso:

<execution> <id>hbm2java</id> <phase>generate-sources</phase> <goals> <goal>hbm2java</goal> </goals> <inherited>false</inherited> <configuration> <components> <component> <name>hbm2java</name> <implementation>configuration</implementation> </component> </components> <componentProperties> <packagename>package.name</packagename> <configurationfile>target/hibernate3/generated-mappings/hibernate.cfg.xml</configurationfile> </componentProperties> </configuration> </execution>

Sin embargo, el código generado comienza con lo siguiente:

// default package // Generated 2010-05-17 13:11:51 by Hibernate Tools 3.2.2.GA /** * Messages generated by hbm2java */ public class Messages implements java.io.Serializable {

¿Hay alguna manera de obligar a maven a generar la parte del paquete como se define en packagename ?

Actualizar:

Aquí está mi hibernate.cfg.xml, también generado automáticamente por hibernate-tools (hbm2cfgxml):

<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.c3p0.max_size">20</property> <property name="hibernate.c3p0.max_statements">50</property> <property name="hibernate.c3p0.min_size">5</property> <property name="hibernate.c3p0.timeout">1800</property> <property name="hibernate.connection.driver_class">org.postgresql.Driver</property> <property name="hibernate.connection.password">password</property> <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/db</property> <property name="hibernate.connection.username">username</property> <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property> <mapping resource="package/name/Messages.hbm.xml" /> </session-factory> </hibernate-configuration>


Por si acaso, aquí hay una configuración funcional del hibernate3-maven-plugin para un enfoque ascendente:

<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>hibernate3-maven-plugin</artifactId> <version>2.2</version> <executions> <execution> <id>generate-xml-files</id> <phase>generate-resources</phase> <goals> <goal>hbm2hbmxml</goal> <goal>hbm2cfgxml</goal> </goals> </execution> <execution> <id>generate-entities</id> <phase>generate-sources</phase> <goals> <goal>hbm2java</goal> </goals> </execution> </executions> <configuration> <components> <component> <name>hbm2hbmxml</name> <implementation>jdbcconfiguration</implementation> <outputDirectory>target/classes</outputDirectory> </component> <component> <name>hbm2cfgxml</name> <implementation>jdbcconfiguration</implementation> <outputDirectory>target/classes</outputDirectory> </component> <component> <name>hbm2java</name> <implementation>configuration</implementation> <outputDirectory>target/generated-sources/hibernate3</outputDirectory> </component> </components> <componentProperties> <propertyfile>src/main/resources/database.properties</propertyfile> <jdk5>true</jdk5> <ejb3>false</ejb3> <packagename>com.mycompany.myapp</packagename> <format>true</format> <haltonerror>true</haltonerror> </componentProperties> </configuration> <dependencies> <dependency> <groupId>org.apache.derby</groupId> <artifactId>derby</artifactId> <version>10.5.3.0_1</version> </dependency> </dependencies> </plugin>

Y aquí está el contenido de mi archivo src/main/database.properties :

hibernate.connection.driver_class=org.apache.derby.jdbc.EmbeddedDriver hibernate.connection.url=jdbc:derby:./derbyDBs/EMPLDB hibernate.connection.username=APP hibernate.connection.password=APP hibernate.dialect=org.hibernate.dialect.DerbyDialect #workaround for http://opensource.atlassian.com/projects/hibernate/browse/HBX-1145 hibernate.connection.autocommit=true

Esta configuración:

  1. Genera *.hbm.xml en target/classes (con el paquete) durante generate-resources .
  2. Genera hibernate.cfg.xml en target/classes con entradas para los archivos de mapeo.
  3. Genera entidades a partir de las asignaciones en target/generated-sources/hibernate3 (recomiendo seguir la convención target/generated-sources/<tool> para las fuentes generadas para que sean autodetectadas por los IDE).

Este es el resultado de la clean compile una base de datos de muestra con dos tablas:

$ mvn clean compile ... $ tree target/ target/ ├── classes │   ├── com │   │   └── mycompany │   │   └── myapp │   │   ├── Department.class │   │   ├── Department.hbm.xml │   │   ├── Employee.class │   │   └── Employee.hbm.xml │   ├── database.properties │   └── hibernate.cfg.xml └── generated-sources └── hibernate3 └── com └── mycompany └── myapp ├── Department.java └── Employee.java


Ok, lo descubrí. Puse la respuesta aquí .