2012-09-12 2 views
2

나는 우리가 300 개체 시합이 프로젝트에서 최대 절전 모드를 사용하고 거짓. 게으른 = "프록시는"대일 매핑에서 작동하지 않을 때 사용하는 기본-게으른 = 최대 절전 모드

많은 엔티티 관계를 위해 우리는 더 게으른 로딩을 필요가 없습니다, 그래서 우리는 매핑에 default-lazy=false을 사용하고, 우리는 게으른 로딩을 필요로하는 곳에, 우리는 하나 개의 관계에 많은 컬렉션에 대한 lazy=truelazy=proxy을 사용했다.

모음에 대한 잘 작동 lazy=true

하지만 lazy=proxy는 대일 경우 무시됩니다. User 엔티티와 many-to-one 매핑을 가진 Vehicle 엔티티를 질의 할 때, Hibernate는 User 엔티티도로드한다. 즉, lazy=proxy을 무시한다. 다음은 매핑 파일의 짧은 버전입니다.

<hibernate-mapping package="com.test.bean" default-lazy="false"> 
<class name="Vehicle" table="tbl_vehicle" optimistic-lock="version" > 
    <id name="vehicleNo" column="VEHICLE_NO" type="int" node="@id"> 
     <generator class="com.test.TestSequenceGenerator" /> 
    </id> 
    <version name="version" column="version" type="integer" unsaved-value="undefined" generated="never"/> 
    <property name="color" /> 
    <property name="wheel" /> 
    <property name="seat" /> 

    <many-to-one name="user" class="User" embed-xml="false" lazy="proxy" fetch="select"> 
     <column name="user_id" not-null="true" /> 
    </many-to-one> 
</class> 

<class name="User" table="tbl_user" optimistic-lock="version" > 
    <id name="userId" column="user_id" type="int" node="@id"> 
     <generator class="com.test.TestSequenceGenerator" /> 
    </id> 
    <version name="version" column="version" type="integer" unsaved-value="undefined" generated="never"/> 

    <property name="name" /> 

    <set name="vehicles" table="tbl_vehicle" cascade="all" 
      inverse="true" fetch="select" lazy="true"> 
       <key> 
        <column name="user_id" not-null="true" /> 
       </key> 
       <one-to-many class="Vehicle" /> 
      </set> 

</class> 
</hibernate-mapping> 

답변

0

나는 모두 당신의 의견에 동의합니다. 그러나 여기서, 클래스 매핑 사용자는 lazy = "proxy"가 작동하려면 default-lazy = "false"가 없어야합니다.

관련 문제