在书中Java Persistence with Hibernate
,它讨论了以下使用 a 的用例UserType
:
我们需要将货币金额存储在数据库中,但用户可以使用任何货币。因此,我们在将金额存储到数据库之前将其“标准化”为美元,并使用一种UserType
实现,在存储之前将金额转换为美元,并在从数据库中读取它之后但在将其返回给用户之前将其转换为用户指定的货币。
我可以想到另外两种方法来做到这一点:
1) 使用 Hibernate 的字段访问来存储/读取数据库,并使用公共 getter/setter 进行转换,
2) 为 Hibernate 创建一对将使用 USD 的私有 getter/setter,以及一个用于用户必要转换的公共 getter/setter。
这些方法与 using 相比如何UserType
?还有其他优点UserType
吗?