【问题标题】:Are there any frameworks like Hibernate but no cache and do directly execute SQL?有没有像 Hibernate 这样的框架但没有缓存并且直接执行 SQL?
【发布时间】:2012-03-07 04:49:18
【问题描述】:

我一直在尝试使用 Hibernate。我喜欢hibernate,它有注解映射能力(比如@Entity、@Column)

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

另外,我完全不喜欢它的“提交 vs 刷新”的想法,它在插入/删除/更新数据库中的某些数据时不会直接将 SQL 运行到数据库。

那么,正如我的标题,有没有像 Hibernate 这样带有注释但没有缓存并且直接执行 SQL 的框架?如果这样的框架可以在Spring中使用就好了。

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

【问题讨论】:

    标签: java spring hibernate spring-data


    【解决方案1】:

    这些功能默认开启,因为您通常需要它们(即使您一开始并没有意识到)。

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

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

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

    【讨论】:

    • 谢谢你的回答,让我试试这个。
    • 如何在 spring-servlet.xml/hibernate.cfg.xml 中配置使用 openStatelessSession?
    • 应该没有什么不同 - 你仍然可以注入 SessionFactory 并从那里获取会话
    【解决方案2】:

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

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

    【讨论】:

    • 感谢您的回答,我也在看这个,但它没有像映射列的注释。
    【解决方案3】:

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

    我不明白“不喜欢缓存”这件事。

    【讨论】:

    • 感谢您的回答。无论如何,你的意思是你不明白这句话“我不喜欢它缓存想法......”吗?这意味着我不想使用 Hibernate 的任何缓存。
    • @SurasinTancharoen 我明白你说的,我只是不知道为什么有人会认为缓存不是一个好主意。
    猜你喜欢
    • 2011-03-27
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 2018-06-18
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    相关资源
    最近更新 更多