多対1の関係で二次キャッシュを使用するようにnHibernateを取得しようとしていますが、設定方法に関する明確な説明は見つかりませんそれは正しく。私はこのHow to get nhibernate to cache tables referenced via many-to-one - is my config correct?を見つけましたが、提供されているsJHonnyの例は1対多のものであり、私がそれを採用したときにはうまく動作しません。この件に関しては他にも記事がありますが、それほど具体的なものはありません。多対1参照のためのnHibernate二次キャッシュの使用
私は作品を提供します(私は劇的に編集しなければなりませんでしたので、うまくいけばうまく動作します)。しかし、参照オブジェクトは、DataObjectが照会されるときに取り出されるときだけキャッシュされます。私は知っていると思います1)/どのようにLookupObjectコレクションをプリロードするには? 2)このコレクションをリージョンに割り当てて有効期限を設定すると、どこでキャッシュを再ロードするのですか? 3)nHibernateがLOOKUPテーブルとの結合を生成しないようなDataObjectのhbm.xmlを変更する方法。つまり、ルックアップオブジェクトではなく、LOOKUPではなく、DATA.LOOKUP_IDを取得するだけです。名?
LookupObject.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="BusinessObjects" assembly="BusinessObjects">
<class name="LookupObject" table="LOOKUP" mutable="false" batch-size="20">
<cache usage="read-only" />
<id name="Id" column="ID" />
<property name="Name" column="NAME" />
</class>
</hibernate-mapping>
DataObject.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="BusinessObjects" assembly="BusinessObjects">
<class name="DataObject"
table="DATA" mutable="false">
<composite-id>
<key-property name="Id" column="ID"/>
<key-property name="Date" column="DATE" type="Date"/>
</composite-id>
<many-to-one name="LookupObject" not-null="true" column="LOOKUP_ID" fetch="join">
</class>
</hibernate-mapping>