hibernate एचबीएम 2 जावा और एचबीएम 2 डीओ को जनक वर्गों के लिए पैकैनामेम जोड़ने के लिए कैसे कॉन्फ़िगर करें




maven-2 hibernate-tools (2)

मैं hbm2java को कॉन्फ़िगर करने की कोशिश कर रहा हूँ जिसमें hbm2java क्लास और डीएओ ऑब्जेक्ट्स उत्पन्न करने के लिए hbm2java । जिन मुद्दों पर मैं काम कर रहा हूं, उनमें से एक पैकेज नाम उत्पन्न नहीं होते हैं। मैं इसके लिए निम्नलिखित पॉम का उपयोग कर रहा हूं:

<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>

फिर भी उत्पन्न कोड निम्नलिखित के साथ शुरू होता है:

// 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 {

क्या पैकवेयर के रूप में परिभाषित पैकेज भाग को उत्पन्न करने के लिए मेवेन को मजबूर करने का कोई तरीका है?

अद्यतन करें:

यहां मेरा हाइबरनेट सीफ़्फ़। एक्सएमएल है, जो हाइबर्नेनेट-टूल्स (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>

ठीक है, मैंने पता लगा लिया। मैंने जवाब यहां रखा।


बस के मामले में, यहां हाइबरनेट 3-मवेन-प्लगइन का एक नीचे-अप दृष्टिकोण के लिए काम का विन्यास है:

  <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>

और यहां मेरे 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 

यह सेटअप:

  1. *.hbm.xml generate-resources दौरान target/classes (पैकेज के साथ) में *.hbm.xml generate-resources
  2. मानचित्रण फ़ाइलों के लिए प्रविष्टियों वाले target/classes में एक hibernate.cfg.xml . hibernate.cfg.xml उत्पन्न करता है।
  3. target/generated-sources/hibernate3 में मैपिंग से संस्थाएं target/generated-sources/hibernate3 (मैं target/generated-sources/<tool> कॉन्फ़िगर करने के बाद सुझाव देता हूं ताकि वे आईडीई द्वारा स्वत: पता लगा सकें)।

दो तालिकाओं के साथ नमूना डेटाबेस के खिलाफ clean compile का परिणाम यहां दिया गया है:

$ 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




hbm2java