错误的选择创建主键方式

由于经验的不足,在设计数据库时,将表UP_CATEGORY_CATEGORY的主键交由Spring维护,之前设计可以实现方法如下。
 Oracle数据库
先在数据库建立一个自增序列。
create sequence seq_post_id
increment by 1
start with 1;
同时在Spring的配置文件中,增加一个Spring的自增键管理bean- org.springframework.jdbc.support.incrementer. OracleSequenceMaxValueIncrementer,设置数据库的自增序列名,在需要获取主键时,生成一个org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer类的实例,再通过调用这个实例的nextIntValue方法,获得主键。
 Mysql数据库
需要再建一个表,新建一列,作为主键值的容器,同时在Spring的配置文件中加入Mysql的自增键管理bean- org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer,同时设置数据库自增键表的表名,列名,获得主键的方法和Oracle一样。
以上设计存在如下问题。
 对数据库特性依赖比较高。
 不同数据库的配置也不同,不能一劳永逸。
在测试时发现在oracle数据库下不能通过工具生成需要的子增减序列,之前的设计全落空了,只能另寻出路了,这时获得两个建议,从DRM中取得主键,另一个使用Java的内置方法,只要获得一个不重复的值即可。由于持久层改造成DRM管理尚未完成,所以采用了第二个方案,具体实现如下。
import java.rmi.server.UID;
String uid=new UID().toString();
uid=uid.replaceAll(":", "");
这里使用一个JDK内置类java.rmi.server.UID,它的作用是生成一个字符串序列,对产生它的主机来说为唯一的标识符,生成的值恰是可以作为主键,用这样的方法获得主键,解决了Spring管理带来的那两个问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值