是否可以在hibernate中映射自定义最终类?

时间:2016-07-10 12:28:14

标签: java hibernate

假设我已经上课了,我希望坚持下去。我无法更改它的代码,即无法在其中添加任何注释。此外,类不遵循bean约定。

即。这是我希望坚持的任意复杂的课程。

是否可以在Hibernate中编写某种自定义序列化器和反序列化器(不知道如何命名),以便我能够像通常的POJO一样读取这些类?

2 个答案:

答案 0 :(得分:0)

您好第一个问题是我可以映射" fina类" 只要您不使用Hibernate Enchancing或某种仪器,这个问题的答案就是YES。 / p>

现在第二个问题。 Bean不遵循Bean约定。我想这意味着没有吸气剂和制定者。您可以拥有属性级别访问权限,因此这也不是问题。

是否可以在Hibernate中编写自定义序列化程序。这里的答案是否定的。为什么?因为Hibernate不是关于序列化的,所以hibernate是关于SQL的。没有严格要求Hibernate实体应该是可序列化的。

即使Hibernate没有强制执行序列化。即使它没有实现Serializable或Eternalizeable,我仍然可以使我的最终类序列化。是的,你需要将它包装到实现Serializable或Externalizeable的类中,并自己实现doRead doWrite方法。

序列化为JSON或XML - 这不是Hibernate的一部分,也不是JPA的一部分。这两种格式的序列化被定义为Jaxb和Jax-rs规范的一部分。

答案 1 :(得分:0)

看看hibernate UserTypeCompositeUserType,众所周知的EnumUserType example

枚举有点像你的需要:final类,没有getter或setter。它们并不复杂,因此您可能需要一个CompositeUserType,它允许为一个类型映射多个列,而不是UserType

然后你会在课堂上使用它:

public class MyClass { 
    @Id
    private Long id;

    @Type(type = "com...MyCompositeUserType")
    private ComplexFinalClassNotPojo complexObject;
}