您好我有一个应用程序,其中一个if请求附带一个数组我必须从表中选择数据,如果没有找到生成新值并插入表中,然后再次循环统计数据检查下一个值等等。对于新请求,这将完成大约50000次。
我正在使用
public void save(Object obj,Session session) {
Transaction tx = null;
try {
tx = session.beginTransaction();
session.save(obj);
//session.saveOrUpdate(obj);
//session.flush();
session.clear();
tx.commit();
}
catch (HibernateException e) {
e.printStackTrace();
logger.error(e.getMessage(), e);
if(tx!=null){
tx.rollback();
}
}
}
提交方法,并为每个生成的新值调用它。对于每个请求,它被调用50000次。 我必须为每个值提交我的事务,因为我不希望在表中生成重复值,因此如果新请求带有相同的数据而前一个正在运行,则应从表中获取该值。所以我想我将不得不提交每个事务..但如果我使用经典的JDBC而不是休眠,那么这会变得非常快吗?我做错了什么是hibernate比它慢?因为我认为大部分时间都是在开始和提交事务中一次又一次地消耗。
答案 0 :(得分:3)
您正在做的是批处理。
很少有想法
为避免重复插入,请添加一个包含自然键的额外列,并具有唯一约束。