我有一个关于Hibernate工具和配置的问题:
我使用反向工程将Hibernate配置为从数据库生成JPA类,如下所示:
这是一个在反向工程配置文件中映射的表格示例。
现在,默认情况下,所有实体之间的关系都是这样生成的:
在哪里可以进行配置,例如 TB1 的关联,以便获得而不是。
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>
然后我需要对配置进行反向工程:
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>
这是一个在反向工程配置文件中映射的表格示例。
现在,默认情况下,所有实体之间的关系都是这样生成的:
@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;
}
}
Maven的pom.xml文件如下所示:
<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>
在哪里可以进行配置,例如 TB1 的关联,以便获得而不是。
@OneToMany(fetch=FetchType.LAZY
i want to generate
@OneToMany(fetch=FetchType.EAGER ?
在我的情况下,我在哪里可以配置这个选项?
我遇到的第二个问题是关于DAO生成的,DAO类默认被注释为@Stateless,我怎样才能指定它们被注释为另一个注释,比如@Repository或者至少没有注释?