如何使用JPA持久化复杂的嵌套对象

时间:2009-07-28 17:58:45

标签: java jpa rdbms

我正在开发一个项目,该项目使用来自互联网论坛上的分类广告的NLP库来解析信息。在处理之后,我有ForSaleItem实例和各种细节,如条件,价格等。

当我在这些对象上调用toString()方法时,它不会返回存储在对象本身中的字符串,而是在整个论坛帖子中查找自己的起点和终点,然后从那里提取文本。 (这样做是为了我可以计算出各个文本位的接近程度。)

我想使用JPA将这些对象持久化到RDBMS。在处理之后我不再关心邻近的东西了,我只是想向用户显示字符串。如果我坚持整个论坛帖子并通过上述方法继续检索实际文本,那将是一个巨大的浪费。

我现在的问题:我应该使用String字段增强原始类,还是应该创建一个全新的类,即。像PersistentForSaleItem?

2 个答案:

答案 0 :(得分:0)

我建议您创建一个新项目,该项目会一直存在,并且只包含您关注的部分。这似乎可能是最简单的,并且可以让您分离收集/操作数据以及最终存储和显示数据的问题。您甚至可以通过在构造期间传入其他对象来创建持久对象,然后使用注释/ xml配置将对象持久保存到RDBMS中。

只需2美分。

答案 1 :(得分:0)

看起来您的ForSaleItem有几个点与您想要持久存在的内容完全不兼容:

  • 复杂的检索字符串

    的过程

    - >持久性后不需要。

  • 多个objets将持久化为多个表

    - >不必要的复杂和缓慢,而只有一个objet,你可以将String存储在一个表中,并更有效地检索它。

因此,我建议您使用另一个对象进行持久性。

请注意,创建起来非常简单,例如:

  • 一个类,没有超类,注释为@Entity
  • 长标识符字段,带注释@Id和@GeneratedValue
  • 一个字符串字段,带有getter(如果希望字符串长度最大值不同于256默认值,则为@Column)和setter
  • 空构造函数(可选)

  • -