gpt4 book ai didi

java - 自动持久化一个复杂的 Java 对象

转载 作者:行者123 更新时间:2023-11-29 06:25:08 26 4
gpt4 key购买 nike

对于我正在从事的项目,我需要将一些 POJO 保存到数据库中。 POJOs 类定义有时是高度嵌套的,但它们应该是扁平的,因为嵌套是树状的并且不包含循环(并且基本元素最终是基元/字符串)。最好使用的解决方案为每种数据类型创建一个表,并且这些表将具有 POJO 中每个原始成员的一个字段。子类化和类似问题不是这个特定项目的问题。

有没有人知道任何现有的解决方案可以:

  1. 根据类定义自动生成CREATE TABLE定义
  2. 在给定对象实例的情况下,自动生成查询以将对象持久保存到数据库
  3. 自动生成查询以从数据库中检索对象,并在给定键的情况下将其作为 POJO 返回。

可以通过对类文件进行最少的修改/注释和最少的外部配置来实现此目的的解决方案是首选。


例子:

Java 类

//Class to be persisted
class TypeA {
String guid;
long timestamp;
TypeB data1;
TypeC data2;
}

class TypeB {
int id;
int someData;
}

class TypeC {
int id;
int otherData;
}

可以映射到

CREATE TABLE TypeA (
guid CHAR(255),
timestamp BIGINT,
data1_id INT,
data1_someData INT,
data2_id INt,
data2_otherData INT
);

或类似的东西。

最佳答案

我会使用标准化 Java Persistence API (JPA),最好带有注释。关于您的要求:

  1. 这不是规范所要求的,但大多数 JPA 提供程序(所有主要实现都支持)支持从映射元数据生成 DDL。
  2. EntityManager#persist(Object entity) 这样做。
  3. <T> T EntityManager#find(Class<T> entityClass, Object primaryKey) 这样做。

正如提示的那样,JPA 是一个 API,您需要一个实现才能使用它。我喜欢 Hibernate Entity ManagerEclipseLink (参见 this previous question)。

关于java - 自动持久化一个复杂的 Java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3008676/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com