有没有像Hibernate这样的框架但没有缓存并且直接执行SQL?

时间:2012-03-06 20:06:36

标签: java spring hibernate spring-data

我一直在尝试使用Hibernate。我喜欢hibernate,它具有注释映射功能(例如@Entity,@ Column)

但是我不喜欢缓存的想法(How to disable hibernate caching说它也不能被禁用)。

另外,我完全不喜欢它的'commits vs flush'这个想法,当插入/删除/更新数据库中的某些数据时,它不能直接将SQL运行到数据库。

所以,作为我的标题,是否有任何框架,如带有注释的Hibernate,但没有缓存并直接执行SQL?如果这样的框架可以在Spring中使用,那将是件好事。

或者,实际上,Hibernate可以只禁用缓存,或者只是有一些配置可以为每次插入/删除/更新执行直接SQL吗?

3 个答案:

答案 0 :(得分:2)

默认情况下,这些功能处于启用状态,因为您通常需要它们(即使您最初没有意识到这一点)。

但是如果你真的想立即禁用缓存并刷新所有内容:

  • 使用sessionFactory.openStatelessSession() - 此会话不会在第1级缓存中存储任何内容(默认情况下,第2级缓存已关闭)。请注意,您无法使用此会话操作集合映射。
  • 使用session.setFlushMode(..)将其设置为在非常查询之前自动刷新(相当不鼓励)。

请注意,刷新模式仅适用于有状态会话 - 无状态会话立即刷新。

答案 1 :(得分:1)

Hibernate是一个很棒的框架,但对于更轻量级的实现,我倾向于使用Spring JDBC:

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/jdbc.html

答案 2 :(得分:1)

您可能正在寻找更为直接的MyBatis。对于基于注释的示例,see here虽然还有其他示例。您也可以使用纯JDBC,或者如果您使用Spring,则可以使用Spring。

我不理解“不喜欢缓存”的事情。