Hibernate+derby+sequence配置方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Hibernate+derby中,sequence与hilo、identity使用区别,
以及配置方法
一、hibernate+derby+sequence 与hibernate+derby+hilo、
hibernate+derby+identity之间的使用区别:
Task.hbm.xml中:
hilo格式:根据HIBERNATE_UNIQUE_KEY 表中的NEXT_HIZ值,结合一定算法计算出每个表的主键ID,配置简单,不过一旦该表数据被破坏,会对当前所有表的主键生成产生不利影响,上次出现过一次流程ID生成不了的bug,即因于此。
Sequence格式:序列,可设置步长,范围等,优点在于能够便利地实现数据库表记录的迁移,而且sequence能够方便的进行配置
TASKINFO_SEQ
identity格式:自增长,从0开始,每次+1,不能人为修改主键ID值,不利于数据库表记录的迁移。
二:配置方法:
当前的.hibernate-3.3.2.GA.jar 中,默认的derby方言中取sequence语句是“values nextval for TASKINFO_SEQ”,是可以在oracle、DB2中使用,但是不能在derby中使用。
对此,我新建了类MyDerbyDialect.java,重写了
org.hibernate.dialect.DerbyDialect.class中的getSequenceNextValString 方法,目的是能够按照derby的sequence生成方式来计算下一个sequence值,
derby方言重写为:values next value for TASKINFO_SEQ
可能.hibernate-4.0.GA.jar 中,以及增加了此类改动,这个待核实。
改动一:
原来GDPP是采用hilo格式,在Task.hbm.xml中
Sequence格式:
TASKINFO_SEQ
改动二:workdb.xml
修改为:
改动三:新建MyDerbyDialect.java文件,继承改写getSequenceNextValString方法,
public class MyDerbyDialect extends org.hibernate.dialect.DerbyDialect {
private static final Logger logger = Logger.getLogger(MyDerbyDialect.class);
@Override
public String getSequenceNextValString(final String sequenceName) { return "values next value for " + sequenceName;
}
}
改动四:
workdb 包下面MANIFEST.MF文件
增加一行代码
org.hibernate.dialect,