hibernate のプロパティ タグのlazy属性により、次のリンクに従ってプロパティを遅延ロードできます。-財産
lazy (オプション - デフォルトは false): インスタンス変数が最初にアクセスされたときに、このプロパティを遅延フェッチするように指定します。ビルド時のバイトコード インストルメンテーションが必要です。
しかし、プロパティの 1 つに lazy=true を設定しようとすると、この例では遅延ロードされません。
Hibernate マッピング ファイル:
<hibernate-mapping package="org.hibernate.tutorial.domain">
<class name="Event" table="EVENTS" select-before-update="true">
<id name="id" column="EVENT_ID">
<generator class="native" />
</id>
<property name="date" type="timestamp" column="EVENT_DATE" />
<property name="title" lazy="true"/>
<set name="participants" table="PERSON_EVENT" inverse="true">
<key column="EVENT_ID" />
<many-to-many column="PERSON_ID" class="Person" />
</set>
</class>
</hibernate-mapping>
プログラム:
public static void main(String[] args) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Event event = (Event) session.get(Event.class, 135L);
session.getTransaction().commit();
System.out.println(event);
HibernateUtil.getSessionFactory().close();
}
休止状態によって生成されたクエリ:
Hibernate: select event0_.EVENT_ID as EVENT1_0_0_, event0_.EVENT_DATE as EVENT2_0_0_, event0_.title as title0_0_ from EVENTS event0_ where event0_.EVENT_ID=?
この場合、怠け者が機能しない理由を理解するのを手伝ってください。