【问题标题】:JPA persistence for external libraries datamodels外部库数据模型的 JPA 持久性
【发布时间】:2015-11-29 00:26:54
【问题描述】:

所以我正在制作一个 spring-boot 应用程序,并且我正在从外部库(通过 maven 导入)导入一些数据模型。我有一些模型具有外部库类型的字段,我希望能够持久保存它。比如:

package com.example.module;
import external.Phone;
@Entity
public class Person{
  @Id
  @GeneratedValue
  String id;
  String name;
  Phone phone;
}

问题是,如果 Phone 的实现不是 JPA 感知的,是否可以存储它?例如:

package external;

public class Phone{
  String number;
  String areaCode;
}

【问题讨论】:

    标签: java jpa spring-boot tags


    【解决方案1】:

    就持久性而言,取决于你想用它做什么。

    如果您希望 Phone 本身就是一个实体,您可以定义一个 orm.xml 文件来指定其持久性(如果您的 JPA 提供程序使用字节码增强,您还必须小心获取更新的 Java 类文件)。

    如果您只想将其嵌入嵌入,请查看创建 JPA AttributeConverter 并将其持久保存到与所有者相同的表中。您的 JPA 提供者可能允许也可能不允许通过 AttributeConverter 将其持久化到多个列中(我使用的 DataNucleus JPA 支持这种灵活性,但这是供应商扩展,您的可能不可用)。

    【讨论】:

    • 我听从了你的第二条建议,在 ORM 映射器类中使用了@Convert。我真的很想避免做任何类型的 xml 配置,因为它总是感觉像是从我想在我的应用程序上强制执行的配置注释方法的约定退了一步。
    【解决方案2】:

    我最终使用了这种方法JPA map JSON column to Java Object,因为它允许我完全控制如何持久化字段,甚至是包含我想要的对象的 JSON 的字符串。

    【讨论】:

      猜你喜欢
      • 2013-09-19
      • 2021-02-17
      • 2020-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多