[英]jOOQ and Caching?
我之所以提到这一点,因为Hibernate也可以使用这种缓存,在某些情况下它可能是有意义的。
在Hibernate中,查询缓存与二级缓存密切配合。 在jOOQ中,您可以使用jOOQ VisitListener
API实现拦截所有查询的查询缓存。 有一些关于这个主题的博客文章:
将来会有更好的支持这种类型的缓存(不是在jOOQ 3.7中),因为这种缓存属于SQL API。 请注意,您的JDBC驱动程序可能也支持这种缓存 - 例如ojdbc。
Hibernate的第一级缓存背后的想法对于像jOOQ这样更面向SQL的API没有意义。 SQL是一种高度复杂的语言,可以在实际持久化的实体和相同实体的客户端表示之间起作用。 这意味着一旦使用SQL,您可能会创建与数据的原始实体表示无关的特殊元组。
换句话说:只有在限制查询语言的功能和范围时,才能实现一级缓存,如果您控制所有数据库交互,就像Hibernate一样。 jOOQ明确表示不这样做。
Hibernate中的二级缓存是一个缓存,主要用于主数据和类似类型的数据,从数据库中提取数据几乎没有意义,因为数据不会改变。
没有任何理由,为什么ORM应该实现这种缓存,在简单的情况下不方便。 但在许多情况下,最好使用@Cacheable
注释服务方法,例如,如本春季页面所述 。 这将是更高层上的缓存,而不是ORM /查询层上的缓存,您可以将缓存与业务逻辑更紧密地关联。
是的你将会。 jOOQ只是一种类型安全的SQL方法,不进行任何缓存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.