对持久化对象的要求
1、 提供一个无参构造器,使Hibernate可以使用Constructor.newInstace()来实例化持久化对象
2、提供一个标识属性(identifier property)。通常映射为数据库表的主键字段,如果没有该属性,一些功能将不起作用,如Session.saveOrUpdate()。
3、 为持久化类的字段声明访问方法(set/get)。Hibernate对javaBean风格的属性实行持久化。
4、使用非final类,在运行时生成代理是Hibernate的一个重要功能,如果持久化类没有实现任何接口,Hibernate使用CGLB生成代理,如果使用final类,则无法生成CGLIB代理。
5、重写equals()和hashCode()方法,如果需要将持久化类放到Set中(当需要进行关联映射时),则应该重写这两个方法。
对于映射配置文件中非主键元素使用<property>标签映射,<property>标签的type属性用来指定持久化类和数据表中的类型。
可以写Java中类的全名,也可以写Hibernate类型。
映射主键属性
主键如果是数字建议使用对应的包装类型。
id元素用于映射主键,id元素子元素<generator>的class属性用于指定主键生成策略。
其常用值如下:
identity:使用数据库的自动增长策略,不是所有数据库都支持,比如Oracle就不支持
sequence:在DB2,PostgreSQL,Oracle,SAPDB等中使用sequence。
hilo:使用高地位算法生成主键,只需要一张额外的表,所有的数据库都支持。
increment:由Hibernate维护的,先查询当前最大的id值,在加1增长,不推荐使用,因为有线程安全问题。
assigned:手工指定主键。
原文地址:http://blog.csdn.net/u011740475/article/details/39478263