Hibernate+derby+sequence配置方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

org.hibernate.dialect.DerbyDialect

修改为:

com.boco.gdpp.service.workdb.MyDerbyDialect

改动三:新建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,

相关文档
最新文档