Hibernation tool, reverse engineering

I have the following question about Hibernate tools and configuration: I configure hibernation to generate JPA classes from a database using reverse engineering, for example:

hibernate.cfg.xml

<?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.bytecode.use_reflection_optimizer">false</property> <property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property> <property name="hibernate.connection.password">pass</property> <property name="hibernate.connection.url">jdbc:oracle:thin:url</property> <property name="hibernate.connection.username">user</property> <property name="hibernate.default_schema">schema</property> <property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property> </session-factory> </hibernate-configuration> 

then I have for reverse engineering config:

hibernate.reveng.xml

 <hibernate-reverse-engineering> <table-filter match-name="TB1"/> <table name="TB_1" class="com.classtb1"> <column name="ENDPAGE" property="pageIntervalEnd"/> <column name="SELECTABLE" property="selectableInd"/> </table> </hibernate-reverse-engineering> 

This is a sample of a single table that appears in this reverse engineering configuration file.

Now, by default, all relationships from entities are generated as follows:

  @Entity @Table(name="TB1" ) public class Classtb1 implements java.io.Serializable { ... private Set<Classtb1Entry> classtb1= new HashSet<Classtb1Entry>(0); ... @OneToMany(fetch=FetchType.LAZY, mappedBy="Classtb1") public Set<Classtb1Entry> getClasstb1Entries() { return this.classtb1Entries; } } 

The maven pom.xml file looks like this:

  <profiles> <profile> <id>WithoutDBGen</id> </profile> <profile> <id>Full</id> <activation> <activeByDefault>true</activeByDefault> </activation> <build> <plugins> <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>hbm2cfgxml</goal> </goals> <inherited>false</inherited> <configuration> <components> <component> <name>hbm2cfgxml</name> <implementation>jdbcconfiguration</implementation> </component> </components> <componentProperties> <packagename>com.persistence.jpa</packagename> <revengfile>src/main/resources/hibernate.reveng.xml</revengfile> </componentProperties> </configuration> </execution> <execution> <id>generate-hbm-xml-files</id> <phase>generate-resources</phase> <goals> <goal>hbm2hbmxml</goal> </goals> <inherited>false</inherited> <configuration> <components> <component> <name>hbm2hbmxml</name> <outputDirectory>target/classes</outputDirectory> </component> </components> <componentProperties> <packagename>com.persistence.jpa</packagename> <revengfile>src/main/resources/hibernate.reveng.xml</revengfile> <detectoptmisticlock>false</detectoptmisticlock> </componentProperties> </configuration> </execution> <execution> <id>generate-jpa-entities</id> <phase>generate-sources</phase> <goals> <goal>hbm2java</goal> </goals> <inherited>false</inherited> <configuration> <components> <component> <name>hbm2java</name> <implementation>annotationconfiguration</implementation> <outputDirectory>src/main/generated</outputDirectory> </component> </components> <componentProperties> <packagename>com.persistence.jpa</packagename> <configurationfile>target/hibernate3/generated-mappings/hibernate.cfg.xml</configurationfile> <templatepath>target/hibernate3/generated-mappings/</templatepath> <ejb3>true</ejb3> <jdk5>true</jdk5> </componentProperties> </configuration> </execution> <execution> <id>generate-dao</id> <phase>generate-sources</phase> <goals> <goal>hbm2dao</goal> </goals> <inherited>false</inherited> <configuration> <components> <component> <name>hbm2dao</name> <implementation>annotationconfiguration</implementation> <outputDirectory>src/main/generated</outputDirectory> </component> </components> <componentProperties> <packagename>com.persistence.dao</packagename> <configurationfile>target/hibernate3/generated-mappings/hibernate.cfg.xml</configurationfile> <templatepath>target/hibernate3/generated-mappings/</templatepath> <ejb3>true</ejb3> <jdk5>true</jdk5> </componentProperties> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles> 

Where can I configure for a single relationship, for example, in the case of TB1, instead

 @OneToMany(fetch=FetchType.LAZY i want to generate @OneToMany(fetch=FetchType.EAGER ? 

Where can I configure this setting in my case?

The second problem is generating DAO, DAO classes are annotated by default as @Stateless, how can I specify this, so my DAO is annotated using another annotation like @Repository or at least without annotations?

+4
source share
1 answer

I just found this forum link on hibernate: https://forum.hibernate.org/viewtopic.php?f=1&t=1003635 There seems to be no way to configure this behavior in the reverse engineering configuration file, which is really sad. Reverse engineering generates hbm.xml files. In the hbm.xml file, you can configure the boot option lazy (lazy = "true") or impatient (lazy = "false"), but not before. Perhaps the maven task will work here to modify the generated hbm.xml.

If anyone has any other idea, I would really appreciate it, I'm still looking for an opportunity.

+1
source

Source: https://habr.com/ru/post/1398240/


All Articles