今天隔壁部门的兄弟尝试用Oracle的Sequence为Hibernate做主键。
做法很简单,我看了之后觉得不是很妥当,应该慎用和少用,
一旦用了Sequence,那么程序就和数据库强耦合了。
从设计的角度,这是很不值得推荐的。
况且,Hibernate的优秀的主键策略那么多,怎么也轮不到Sequence吧?
------------------------------------------
引用这兄弟的一篇文章,指出还有tablespace的错误:
Hibernate在自增量上的设计缺陷
但从技术的角度,做一个backup,Sequence的实现方式,核心代码是这三行:
<generator class="sequence">
<param name="sequence">pk</param>//pk为sequence名称
</generator>
全部方式如下:
在Oracle中建立sequence,名称为pk:
create sequence pk
start with 1
increment by 1
maxvalue 2000
nocycle
cache 30;
在映射文件中修改:
<class name="com.kay.pojo.Student" table="STUDENT" schema="KAY">
<id name="id" type="java.lang.Long">
<column name="ID" precision="22" scale="0" />
<generator class="sequence">
<param name="sequence">pk</param>//pk为sequence名称
</generator>
</id>
<property name="name" type="java.lang.String">
<column name="NAME" length="50" />
</property>
</class>