我有一个方法,在使用Hibernate的默认可遍历解析器验证实体列表时,可能会对数据库进行大量调用。如果我注释它@Transactional,它的运行速度快了近四倍。几个问题:
1)为什么它更快?
2)如何在不使方法具有事务性的情况下复制速度提升?我绝对不需要在事务中包装此方法,并使其成为事务性与该方法的真实意图不一致。
答案 0 :(得分:1)
我相信正在发生的事情是你的数据库逻辑需要一个事务。如果正在进行事务,例如由于Spring根据您的注释创建了一个事务,则这些操作将加入它。如果没有正在进行的事务,他们将不得不经历获取连接,启动事务以及可能在每次调用时设置Hibernate会话的过程。
这与你的方法的意图有什么不相符?