2012-02-24 4 views
4

У меня есть следующий вопрос об инструментах Hibernate и конфигурации: я настроить спящий режим для genrate классов JPA из базы данных с обратной инженерией, как это:Hibernate инструмента, обратный инжиниринг

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

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

Где я могу настроить эту опцию в своем корпусе e?

Вторая проблема, которую я имею в генерации DAO, классы DAO по умолчанию аннотируются как @Stateless, как я могу указать это, чтобы мой DAO был аннотирован с помощью другой аннотации, например @Repository или, по крайней мере, без аннотаций?

ответ

1

Я просто нашел эту ссылку на форуме на спящем режиме: https://forum.hibernate.org/viewtopic.php?f=1&t=1003635 Кажется, нет никакой возможности настроить такое поведение в обратном файле инженерной конфигурации, что очень печально. Обратное проектирование создает файлы hbm.xml. В файле hbm.xml вы можете настроить параметр загрузки lazy (lazy = "true") или eager (lazy = "false"), но не раньше. Возможно, здесь будет работать задача maven для изменения созданного hbm.xml.

Если у кого-то есть какая-либо другая идея, я бы действительно оценил это, я все еще ищу возможность.

 Смежные вопросы

  • Нет связанных вопросов^_^