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?