mdsk.net
当前位置:首页 >> hiBErnAtE ORACLE数据库 SEQUENCE主键 批量插入时速度慢 >>

hiBErnAtE ORACLE数据库 SEQUENCE主键 批量插入时速度慢

建议使用native,hibernate会根据底层数据库的不同自动选择identity或者sequence或者hilo.但如果你确定你只会用到oracle,那么用sequence是最方便的.

自增主键是采用触发器+序列的方式吧? 触发器是影响性能的,而且你还有索引,不过感觉你插入一条数据的话不可能会慢的,除非一次性插入大量数据

1. 是否为oracle数据库2. 数据库查看是否创建该自动增长sequence3. 名称是否正确希望能对你有帮助

定义@javax.persistence.SequenceGenerator( name="SEQ_GEN", sequenceName="student_sequence", allocationSize=100 )也就是定义你save对象使用的sequence,将allocationSize越接近你同时插入的数据,就会越快.

缓存策略如果为NO-CACHE,则按1子增长;如果不是,则在每次启动服务器时,自增长可能不能接着上次序列值自增1.

试试 并行 direct no log 等方式

我刚学完hibernate的hql的连接查询,马上准备学策略了,我可以告诉你hql虽然查询的时候是将其转换成了sql在数据库里查询,但是我们老师说的hibernate做了很多优化的工作,不要以为要转换成sql就会影响性能什么的,hql的查询效率不会比sql低的,当然如果你是一个数据库高手,做了sql的优化很好,这就另当别论了,不知道我的回答是不是你想要知道的.

ya178帮帮团:hibernate用的sequence就是指定的oracle的sequence.你仔细看看配置就知道了!

如果序列就是主键的话,那么给你的表新建一个触发器,当插入的时候将下一个序列填入主键即可.这样就不用管POJO了.一般都是这么做的,方便.

执行完这句sql语句select CLASS_ID_SEQ.nextval from dual之后,class这个对象已经执行过setId方法,所以当前它的id值可以获得getId方法得到;可以直接在在action这样写Long id=class.getId();

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.mdsk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com