ID生成策略(xml)
Hibernate映射文件(*.hbm.xml)中的<id>元素定义持久化类的标识符属性名、类型和与数据库表中字段的映射,其<generator>子元素则用来设置当前持久化类的标识符属性的生成策略。
?
一个持久化对象对应数据库表中的一条记录,为了更好地持久化表中的每一条记录,需要通过<generator>元素的class属性设置采用的标识符属性生成策略,如下面的代码所示:
<id name="id" type="java.lang.Integer" column="ID"> <generator name="code"><id name="id" type="java.lang.Integer" column="ID"><generator name="code"><id name="id" type="java.lang.Integer" column="ID"><generator name="code"><id name="id" type="java.lang.Integer" column="ID"><generator name="code"><id name="id" type="java.lang.Integer" column="ID"><generator name="code"><id name="id" type="java.lang.Integer" column="ID"> <generator name="code"><id name="id" type="java.lang.String" column="ID"><generator name="code"><id name="id" type="java.lang.String" column="ID"><generator name="code"><id name="id" type="java.lang.Integer" column="ID"><generator name="code"><id name="id" type="java.lang.Integer" column="ID"><generator name="code"><id name="id" type="java.lang.Integer" column="ID" ><generator class="foreign"><param name="property">user</param></generator></id>
?
?
11? 选择标识符属性生成策略
?
在选择Hibernate提供的标识符属性生成策略时,要具体问题具体分析,如果应用系统不需要分布式部署,在数据库支持的情况下使用sequence、identity、hilo、seqhilo和uuid生成策略都是不错选择;如果应用需要使用多个数据库或者进行分布式的部署,则uuid生成策略是最佳的选择。还有一种情况是使用Hibernate改造遗留系统,可能需要人工采用一定的规则为标识符属性赋值,这时使用assigned生成策略比较合适。