当前位置: 首页 > 面试题库 >

在一个模型中结合JAXB和JPA

许振海
2023-03-14
问题内容

我必须设计一个数据模型(在Java EE
6应用程序中),该数据模型将通过JPA持久化,并且还需要通过JAXB进行序列化。上一次,我有一组带有JAXB批注的实体类,另一组带有JPA批注的实体类。这意味着我必须有很多样板代码才能在两者之间进行翻译。我正在考虑将它们组合在一起,以便每个类都具有两种类型的注释。我知道
可以 做到,但是我的问题是, 应该 吗?会引起什么问题吗?


问题答案:

这个问题对我来说太宽泛了。但是我确实有与JPA一起在JAXB下使用Jackson的特定相关经验,您可能会发现这很有趣。

就我而言,我有一个JPA模型,其中包含大约三打实体和许多循环引用。实体之间的关系图也几乎紧密相连。换句话说,通过遵循实体关系,可以从任何其他实体导航到集合中的几乎任何实体。就我而言,对于上述实体和Jackson
1.5,在我的JPA实体上覆盖JAXB注释被证明是一个坏主意。

一方面,Jackson
1.5对循环引用进行了无限递归。我认为该操作员错误而不是错误。杰克逊是很棒的软件。另外,我认为即将发布的1.6版本提供了根据JACKSON-235进行处理的新功能。因此,这可能很快就会引起争议!

我的其他困难与面对紧密连接的实体时的序列化紧凑性有关。序列化我所有的实体关系是不切实际的。我会天真地跟踪所有实体关系到它们的全部深度,从而在每个请求中序列化一系列淫秽的无关信息。

我想为我的JAXB对象指定多个序列化,并根据预期用途选择具有适当字段和关系的对象。但是,据我所知,JAXB和Jackson并没有提供这种灵活性。他们在界定提供显著灵活性
表现-什么是短暂的,名单怎么看,等等-
但我不认为多表示是可能的一个对象。也许有一种聪明的方法可以在JAXB或Jackson下定义多个表示形式并在运行时进行切换…我很想知道是否存在这样的事情。也许有一个我不了解的功能,或者子类化可以玩的一些技巧。但是我找不到它,所以最终我放弃了,并选择了DTO。

同样,这都是模型特有的。也许这些对您来说不是问题(或者您有针对这些问题的聪明解决方案!)



 类似资料:
  • 我现在正在使用JAXB,我正在努力注释我的前置条件查询的复合概念,以便JAXB会满意。 前提条件查询可以是: 简单:只有一个包含查询的文本节点 化合物 OR:1个前置条件查询的前置条件OR其他匹配 AND:1个前置条件查询的前置条件与其他匹配 当然,复合查询可以由复合查询组成,就像下面的例子一样: 在我的Java模型中,我有一个带注释的接口PreconditionQuery(实际上是一个抽象类,因

  • 继JAXB和复合模式之后,我设法映射: 但我想绘制: 我的JAXB类层次结构如下: 有几种类型的查询: 复合词(和/或)非常相似: 和封闭bean: JAXB不允许我只在上映射。为什么以及有什么替代方案?

  • 我从Rabbitmq中的队列收到了这条json消息: 然后我需要映射到这个模型类: 为此,我在@RabbitListener类中执行了此操作: 另一方面,我有一个服务类,它在customer类中为我提供customer对象,该对象需要添加到我的模型类中,并提供一个特定的id,如下所示: 最后,我的问题是如何将这个对象添加到模型类中?所以我可以在《邮递员》中看到这样的内容:

  • 我认为使用插曲有一些问题(它们不包括简单类型?)和注释?有解决这个问题的办法吗?我在网上找不到很多关于这个问题的东西。感谢你的提示。

  • 我有两个针对同一个表的select查询,这两个查询在select部分中都只包含一个< code>sum(),但是在< code>where子句中有所不同。我需要做的是对两个查询的结果求和。 查询示例: 我需要的是像这样的东西 其中选择和,如我的示例查询中所示。 我试着回答这个问题,但没能成功。我还尝试用替换字段,但这不起作用,因为不允许在中使用

  • 我正在尝试创建一个可以同时包含元素和值的java/jaxb类。 我想在A类的列表中读取一个类的属性,并作为A类本身的值输出。 这是XML: 我必须阅读: 并生产: 这是我的错误类-工作正常: 我的设备类别: Jaxb 抱怨我不能在同一类中同时拥有 xml 元素(错误 )和 xml 值 如何正确建模/注释此内容,以允许我读取 error xml 标记的属性并将其生成为设备标记的值?