当前位置:  开发笔记 > 编程语言 > 正文

创建自定义Hibernate UserType - isMutable()是什么意思?

如何解决《创建自定义HibernateUserType-isMutable()是什么意思?》经验,为你挑选了1个好方法。

我在Hibernate中为项目创建自定义UserType.在我找到isMutable方法之前,它一直相对简单.我试图找出这种方法的含义,合同方式.

这是否意味着我创建UserType的类是不可变的,或者它是否意味着持有对此类的实例的引用的对象永远不会指向不同的实例?

我在Hibernate Community Wiki中找到了一些它们返回true的例子,因为对象本身是可变的 - http://www.hibernate.org/73.html.

社区维基中的其他示例返回false而没有解决原因,即使它们也是可变的.

我检查了JavaDoc,但它也不是很清楚.

从JavaDoc for UserType:

public boolean isMutable()
    Are objects of this type mutable?
    Returns:
        boolean

从JavaDoc for Type:

public boolean isMutable()
    Are objects of this type mutable. (With respect to the referencing
    object ... entities and collections are considered immutable because
    they manage their own internal state.)
    Returns:
        boolean

Andrew Phill.. 10

Hibernate会将标记为"可变"的类型视为可以更改(即需要更新)而不指向新引用.如果为Hibernate加载的属性分配一个新引用,即使类型是不可变的,Hibernate也会识别它 - 这种情况一直发生在例如String字段中.但是,如果你有一个StringBuilder字段并且你把它标记为不可变 Hibernate将不会注意到你是否修改了StringBuilder.

有关更多详细信息和示例项目,请参阅此博客文章.



1> Andrew Phill..:

Hibernate会将标记为"可变"的类型视为可以更改(即需要更新)而不指向新引用.如果为Hibernate加载的属性分配一个新引用,即使类型是不可变的,Hibernate也会识别它 - 这种情况一直发生在例如String字段中.但是,如果你有一个StringBuilder字段并且你把它标记为不可变 Hibernate将不会注意到你是否修改了StringBuilder.

有关更多详细信息和示例项目,请参阅此博客文章.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有