我最近在做项目,是hibernat连接oracle
网上的说法是每张表都要有自己独立的sequence,这是为什么?他和数据库只放一个sequence有什么差别?
还有就是每次插入一条数据,hibernate就发Hibernate: select USER_ID_SEQ.nextval from dual查询最大id的语句,
这样的话对性能是不是不好,每插一条数据都要查询数据库一次,批量插入的话,性能会不会很低下?怎么处理这个问题?

解决方案 »

  1.   

    也不是说一定要每张表都建立一个独立的sequence,sequence是序列,可以用作表中的主键自增,要是都运用一个序列的话,那这个序列就很、、、而且主键也就有点乱了,所以建议有自己的sequence,而不是多表合用一个select USER_ID_SEQ.nextval from dual 你的USER_ID_SEQ是个sequence名,用它做的自增,那每次插入时自然要取它的下一个,oracle不像sql server有自己的主键表示方式,只能用序列来自增了,应该不会影响性能
      

  2.   

    Oracle当初设计为什么不要主键,要序列去自增,是有理由的.
      

  3.   

    其实不用sequence 直接用uuid也是可以的 
    hibernate本身对批量操作支持就比较弱 
      

  4.   

    http://www.fuyun123.com