java - Hibernate 二级缓存中自定义用户类型的内部表示

标签 java hibernate caching ehcache

Hibernate 将实体以脱水形式存储在其二级缓存中。这对我来说效果很好,直到自定义用户类型进入场景,特别是 Jadira's UserType库,我用它来映射 Joda 时间类型。

持久性开箱即用,但 I've discovered Hibernate 会将对 LocalDate 实例的“原始”(序列化)引用放入其二级缓存中,这会导致一些问题,因为每个 LocalDate 实例都会保留大量对内部数据结构,不应出现在缓存中。

有没有一种方法可以连接到 Hibernate 的(脱水)策略来精细控制哪些数据最终将存储在其二级缓存中?

最佳答案

Jadira 的 UserType 库使用 org.hibernate.usertype.UserType 来实现其自定义类型。 UserType 实例在放入二级缓存时会被简单地序列化,这对于 Joda 时间实例来说并不是理想的选择。

这个问题可以通过在实现自定义类型时使用org.hibernate.usertype.CompositeUserType来解决,这使您可以完全控制实体在放入(或取出)时应如何(脱水)水合出)缓存。

我向 Jadira 提交了功能请求,但现在我将通过实现我自己的自定义类型来继续前进。

关于java - Hibernate 二级缓存中自定义用户类型的内部表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26012103/

相关文章:

java - hadoop 映射器中的配置对象为空

Java:当对象在初始化 block 中初始化时,从另一个类调用对象的方法

sql-server - 在 SQL Server 2005 中使用 FreeTextTable 时初始查询速度缓慢

c# - 结合滑动和绝对过期

java - Apache Ignite - java.lang.ClassNotFoundException : Unknown pair

java - 我的构建器模式有什么问题?

java - 在 jpa 2 Criteria API 中选择特定列?

java - Hibernate 检查集合中所有元素是否相等

mysql - JPA Hibernate 双向关系以空指针结束

java - 配置 Salt API - Java