假设我已经上课了,我希望坚持下去。我无法更改它的代码,即无法在其中添加任何注释。此外,类不遵循bean约定。
即。这是我希望坚持的任意复杂的课程。
是否可以在Hibernate中编写某种自定义序列化器和反序列化器(不知道如何命名),以便我能够像通常的POJO一样读取这些类?
答案 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 UserType
和CompositeUserType
,众所周知的EnumUserType example
枚举有点像你的需要:final
类,没有getter或setter。它们并不复杂,因此您可能需要一个CompositeUserType
,它允许为一个类型映射多个列,而不是UserType
。
然后你会在课堂上使用它:
public class MyClass {
@Id
private Long id;
@Type(type = "com...MyCompositeUserType")
private ComplexFinalClassNotPojo complexObject;
}