1。设计Object时的属性时,对于一些数字,要用对象类型,不要用基本类型,比如用Long,不要用long,否则如果插入记录时,此属性为空时,数据库中会自动添加默认值0
2。自身的“一对多”和“多对一”hb映射文件。Area类的属性有Area parent,Set<Area>children
<hibernate-mapping>
<class name="Area" table="AREA">
<id name="id" column="ID" type="long">
<generator class="native">
<param name="sequence">area_sequence</param>
<param name="parameters">START WITH 1000</param>
</generator>
</id>
<version name="version" column="VERSION" type="long"/>
<property name="name" type="string">
<column name="NAME" not-null="true" length="100" unique-key="UK_AREA"/>
</property>
<many-to-one name="parent" class="Area">
<column name="PARENT_ID"/>
</many-to-one>
<set name="children" lazy="true" inverse="true" cascade="all-delete-orphan">
<key column="PARENT_ID"/>
<one-to-many class="Area"/>
</set>
</class>
3.持久化实例如果发生改变,hb会在把变化commit时持久化到数据库,因为hb有脏数据自动检测功能;分离实例必须用update才能持久化到数据库
4。设计Object的equals和hashCode方法,用业务键,即hb的映射文件中的unique-key属性