2
나는 우리가 300 개체 시합이 프로젝트에서 최대 절전 모드를 사용하고 거짓. 게으른 = "프록시는"대일 매핑에서 작동하지 않을 때 사용하는 기본-게으른 = 최대 절전 모드
많은 엔티티 관계를 위해 우리는 더 게으른 로딩을 필요가 없습니다, 그래서 우리는 매핑에default-lazy=false
을 사용하고, 우리는 게으른 로딩을 필요로하는 곳에, 우리는 하나 개의 관계에 많은 컬렉션에 대한
lazy=true
및
lazy=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>