论坛首页 Java企业应用论坛

如何实现自己扩展Hibernate的Id generator?

浏览 21555 次
该帖已经被评为精华帖
作者 正文
   发表时间:2003-12-05  
ffeliza 写道
sayor 写道
对不起没仔细看,如果这样的话的确需要自己写Generator,但你为什么要这样做呢?既然没有业务意义,为什么不用long型呢?应该无所谓这个id是什么型的吧。

hehe,某行业的国际标准。为了适应不同数据库、不同开发语言的需要——我的理解。


既然没有业务意义,又何谓某行业的国家标准呢? 不同数据库,不同开发语言,哪一种没有Long型呢?
0 请登录后投票
   发表时间:2003-12-05  
那你的id总有一定的格式,规则吧。
0 请登录后投票
   发表时间:2003-12-05  
sayor 写道
ffeliza 写道
sayor 写道
对不起没仔细看,如果这样的话的确需要自己写Generator,但你为什么要这样做呢?既然没有业务意义,为什么不用long型呢?应该无所谓这个id是什么型的吧。

hehe,某行业的国际标准。为了适应不同数据库、不同开发语言的需要——我的理解。


既然没有业务意义,又何谓某行业的国家标准呢? 不同数据库,不同开发语言,哪一种没有Long型呢?

[color=red]UlongLong[/color]
This type is an unsigned integer with 64-bit resolution.  It is used as the basis of time and resource identifier types.

A ResourceID is divided into two 64-bit fields to further improve the performance of implementations when dealing with large groups of related resources and multiple data providers.
0 请登录后投票
   发表时间:2003-12-05  
robbin 写道

不需要修改Hibernate源代码,你自己编写一个类 implements net.sf.hibernate.id.IdentifierGenerator就可以了。

hibernate对于设定为“generator”的ID应该是自动调用net.sf.hibernate.id.IdentifierGenerator吧。
那我的类implement了net.sf.hibernate.id.IdentifierGenerator后,怎样才能让hibernate在分配id时自动调用我的类呢?
0 请登录后投票
   发表时间:2003-12-05  
<generator class="com.yourcompany.YourGeneratorClassName">
0 请登录后投票
   发表时间:2003-12-08  
yehs220 写道
<generator class="com.yourcompany.YourGeneratorClassName">

thank you
0 请登录后投票
   发表时间:2003-12-08  
yehs220 写道
<generator class="com.yourcompany.YourGeneratorClassName">

thank you for your help.
it does work!
0 请登录后投票
   发表时间:2004-02-27  
看了大家的讨论,我想起实际项目中经常出现的主键,就是按照一定的规则编码的主键,如产品表,主键编码方式:xxxyyyzzz,xxx:类型代码,yyy:生产厂家代码,zzz:产品序列号,当然,通常类型有一个表存储维护,生产厂家也有一个表存储维护,这样的主键用什么方法实现?还有,一个表中如果自我级联,如有ID、Parent_ID,ID用每两位一级,如:ID=0011,Prent_ID=00,表示是ID=00的第11个子记录,这样的ID又怎么实现?
0 请登录后投票
   发表时间:2004-03-01  
可以自己编写一个类 implements net.sf.hibernate.id.IdentifierGenerator。
在实现过程中,ID的主要生成过程继承(照搬)hibernate自带的方法,但在该继承方法内部添加一些操作,修改由hibernate方法生成的ID,是ID变成自己所需要的样子。
你搜一下,yehs220曾经回复过某位朋友的帖子(也是关于主键生成方式的)。
0 请登录后投票
   发表时间:2007-04-28  
ffeliza 写道
可以自己编写一个类 implements net.sf.hibernate.id.IdentifierGenerator。
在实现过程中,ID的主要生成过程继承(照搬)hibernate自带的方法,但在该继承方法内部添加一些操作,修改由hibernate方法生成的ID,是ID变成自己所需要的样子。
你搜一下,yehs220曾经回复过某位朋友的帖子(也是关于主键生成方式的)。



业务上的ID和系统ID可以分开实现的,省得麻烦
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics