Hibernate
基本情報
- http://www.hibernate.org/hib_docs/v3/reference/en-US/html/
- http://www.geocities.jp/ogaponman/TechnoInf/Hibernate/html_single/index.html
- http://www.redhat.com/docs/manuals/jboss/jboss-eap-4.2/ja_JP/html/Hibernate_Reference_Guide/index.html
- http://www.fireproject.jp/feature/hibernate/index.html
- http://www.techscore.com/tech/Others/Hibernate/index.html
- http://www.wikiroom.com/koichik/?Hibernate%20%C6%FE%CC%E7%B5%AD
設定
composite-element
大体以下のように定義すると主キーなしの関連を表現出来る風。
<class name="Parent"> <id name="id" type="text" column="id"> <generator class="assigned"/> </id> <property name="name" type="text" column="name" /> <set name="children" table="child" lazy="true"><!-- lazy="true"で遅延読み込み。つけないとParentをロードしたときに全子が読み込まれる。lazy="false"の場合、パフォーマンス悪し。メモリ圧迫。 --> <key column="id" /> <!-- Parentのidをキーにする。 --> <composite-element class="Child"><!-- setに含まれるクラス。単体クラスのLoad/save等行えない。parent.getChildren().add(child);でinsertされる(かも) --> <meta attribute="use-in-equals">true</meta><!-- set/map/list/bagの場合、equals,hashCodeを実装することが推奨される。なぜなら未実装ならば含まれるオブジェクトが同一か判別不能→全delete/全insertを行う。から。このmetaをつけるとhbm2javaタスクでequals/hashCodeの実装が行われる。 --> <property name="name" type="text" column="name" /> </composite-element> </set> </class>