在配置Hibernate映射配置文件中遇到如下情况:
<hibernate-mapping package="com.hibernate.www"> <class name="User" table="t_user"> <id name="id" type="int" column="u_id"> <generator class="native"> </id> ......... </class></hibernate-mapping>对第四行的代码不是很理解 后来查了点资料如下: Hibernate区分不同的持久化对象是依靠对象标识符(OID)来实现,而对象标识符则可以通过Hibernate内置的标识生成器来产生。(说白了就是Hibernate区分对象需要唯一的対像标识符,这个可以选用内置的对象生成器生成)
assigned:OID是由业务逻辑程序产生,Hibernate只负责持久化,常用于映射自然主键。hilo:OID有Hibernate按照high/low算法产生,该算法需要从数据库的某个表的字段值读取high值。increment:OID由Hibernate按递增方式产生,该算法依赖保存于当前实例中的一个最大值变量。identidy:OID由底层数据库的自增主键生成机制产生,如MySQL中的auto_increment类型主键与SQL Server的identity类型主键。sequence:OID由底层数据库的sequence主键生成机制产生,如Oracel sequence。native:根据底层数据库对OID的支持,具体选择identity、sequence、hilo生成器来产生OID,常用于跨平台应用。
在选用这些Hibernate内置的表示生成器时,应根据所选用的数据库产品而定。如果数据库为MySQL或SQL Server则优先考虑identity生成器,如果是Oracle则考虑sequence。如果是提高跨平台性,则选用native生成器。
新闻热点
疑难解答