AttributeConverter与Hibernate的UserType

时间:2016-06-21 23:50:07

标签: hibernate

在Java应用程序和MySql之间进行通信时,我需要在Map和JSON字符串之间进行转换。我遇到了两个非常有前途的解决方案:AttributeConverter和UserType。

选择一种解决方案与另一种解决方案之间是否存在任何利弊?在所有事情都被认为是平等的情况下,AttributeConverter肯定看起来更简单。

2 个答案:

答案 0 :(得分:9)

AttributeConverter需要JPA 2.1(Hibernate 4.3+),但如果它可用,它是一个更清洁的选择。自定义UserType可能会破坏未来版本的Hibernate,而AttributeConverter可能不会。

请确保在要转换的特定字段上指定@Convert注释,而不是设置autoApply,因为您不想转换所有地图或所有字符串。

还要确保使用库进行Map-String转换,而不是手动编码。

答案 1 :(得分:0)

就比较这些方法而言,在大多数情况下,AttributeConverter是通俗易懂的解决方案。

除了JPA版本之间的差异外,还有一个较大的缺点/差异值得关注: @Convert@Id属性不能一起使用(您会得到反序列化错误)。如果需要此类功能,则必须诉诸UserType