首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jOOQ和缓存?

jOOQ和缓存?
EN

Stack Overflow用户
提问于 2015-09-21 08:36:30
回答 2查看 4.7K关注 0票数 11

我正在考虑从Hibernate迁移到jOOQ,但我不确定是否可以不使用缓存。Hibernate有一个一级和二级高速缓存。我知道jOOQ确实有支持重用准备好的语句

如果我使用jOOQ,我需要自己负责缓存吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-21 10:55:45

查询缓存/结果缓存:

我提到这一点,因为这种缓存是也可以用Hibernate,在某些情况下可能是有意义的。

在Hibernate中,查询缓存与第二级缓存密切合作。在jOOQ中,您可以实现一个查询缓存,该缓存使用jOOQ VisitListener API拦截所有查询。有一些关于这个主题的博客文章:

  • 使用jOOQ的ResultSet MockDataProvider破解一个简单的JDBC MockDataProvider缓存
  • 用JOOQ和Redis在Java中缓存

将来将更好地支持这种类型的缓存(目前还不是在jOOQ 3.7中),因为这类缓存属于SQL。请注意,您的JDBC驱动程序也可能已经支持这种缓存-例如ojdbc。

一级缓存:

Hibernate的第一级缓存背后的想法对于像jOOQ这样更面向SQL的API来说是没有意义的。SQL是一种高度复杂的语言,它在实际持久化实体和相同实体的客户端表示之间工作。这意味着一旦使用了SQL,您可能会创建与数据的原始实体表示无关的临时元组。

换句话说,只有限制查询语言的功能和范围,并且如果控制所有数据库交互,Hibernate的方式,第一级缓存才是可能的。jOOQ显然不这么做。

二级缓存:

Hibernate中的第二级缓存对于主数据和类似类型的数据非常有用,在这些缓存中,从数据库获取数据几乎没有意义,因为数据不会改变。

没有任何理由,为什么ORM应该实现这种缓存,在简单的情况下缺乏方便。但是在许多情况下,最好用,如本Spring页面中所记录的注释服务方法。这将是一个比ORM /查询层更高层的缓存,在该层,您将能够将缓存与业务逻辑更紧密地关联起来。

票数 10
EN

Stack Overflow用户

发布于 2015-09-21 10:49:08

不,你会的。jOOQ只是一种类型安全的执行SQL的方法,不进行任何缓存。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32690718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档