Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用JPA持久化复杂的嵌套对象_Java_Jpa_Rdbms - Fatal编程技术网

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

Java 如何使用JPA持久化复杂的嵌套对象,java,jpa,rdbms,Java,Jpa,Rdbms,我正在从事一个项目,该项目使用NLP库从互联网论坛上的分类广告中解析信息。经过处理后,我有了SaleItem实例和各种细节,如条件、价格等 当我对这些对象调用toString()方法时,它不会返回存储在对象本身中的字符串,而是在整个论坛帖子中查找自己的起点和终点,然后从中提取文本。(这样做是为了计算单个文本位的接近度) 我想使用JPA将这些对象持久化到RDBMS。在处理之后,我不再真正关心邻近性,我只想向用户显示字符串。如果我坚持整个论坛帖子,并通过上述方法不断检索实际文本,那将是巨大的浪费 我

我正在从事一个项目,该项目使用NLP库从互联网论坛上的分类广告中解析信息。经过处理后,我有了SaleItem实例和各种细节,如条件、价格等

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

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


我现在的问题是:我应该用字符串字段来增强原始类,还是创建一个全新的类,例如PersistentForSaleItem?

我建议创建一个新的项,该项持续存在并只包含您关心的部分。这看起来可能是最简单的,并且允许您将收集/操作数据的关注点与数据的最终存储和显示分离开来。您甚至可以通过在构建过程中传入另一个对象来创建持久化对象,然后使用注释/xml配置将对象持久化到RDBMS中


只要我的2美分。

我建议创建一个新项目,该项目持续存在,并且只包含您关心的部分。这看起来可能是最简单的,并且允许您将收集/操作数据的关注点与数据的最终存储和显示分离开来。您甚至可以通过在构建过程中传入另一个对象来创建持久化对象,然后使用注释/xml配置将对象持久化到RDBMS中


只有我的2美分。

看起来您的ForSaleItem有几点与您想要保留的内容不兼容:

  • 字符串的复杂检索过程

    ->坚持之后就不需要了

  • 将持久化到多个表的多个对象

    ->不必要的复杂和缓慢,而只有一个对象,您可以将字符串存储在单个表中,并更高效地检索它

因此,我建议您使用不同的对象进行持久化

请注意,它的创建非常简单,例如:

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

  • -
看起来您的ForSaleItem有几点与您想要保存的内容不兼容:

  • 字符串的复杂检索过程

    ->坚持之后就不需要了

  • 将持久化到多个表的多个对象

    ->不必要的复杂和缓慢,而只有一个对象,您可以将字符串存储在单个表中,并更高效地检索它

因此,我建议您使用不同的对象进行持久化

请注意,它的创建非常简单,例如:

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

  • -