hibernate持久类的定义
<!--[if !supportLists]-->1.???<!--[endif]-->实现一个默认的(无参数的)构造方法
1).所有的持久类必须有一个默认的构造方法,这个hibernate可以使用反射构建此持久类。
2).提供一个标识符属性,建议声明一致的标识属性。
3).使用非final类(可选),hibernate的懒加载需要此类不是final的或是实现了一个所有方法都为public的接口
4).为持久化字段声明访问器(get和set方法)和是否可变的标识(可选)
public class DomesticCat extends Cat {
??????? private String name;
??????? public String getName() {
??????????????? return name;
??????? }
??????? protected void setName(String name) {
??????????????? this.name=name;
??????? }
?
3.实现equals和hashCode方法
??? 由于在一对多中集合是以Set来容纳的。而Set规定了如果set中某个元素,以一种影响equals比较的方式的改变对象的值,那么Set的行为就是不确定的。而如果一个未保存的对象(此时其没有标识值)在set中,如果执行保存该对象,则将会给这个对象一个标志值,如果equals和hashCode方法是基于标志值实现的,则其哈希码会改变。这就违反了set契约。建议使用业务键值相等来实现equals和hashCode