gpt4 book ai didi

java - JPA 与旧版 native SQL 共存

转载 作者:行者123 更新时间:2023-12-01 04:39:51 27 4
gpt4 key购买 nike

我总是看到更多的 Java Web 应用程序使用 ORM 框架将实体映射到数据库,并且显然使对象的序列化变得更容易。

这看起来不错,通常涉及很多代码,例如:

@Entity
@Table(name="Flight")
public class Flight implements Serializable {
Long id;

@Id
public Long getId() { return id; }

public void setId(Long id) { this.id = id; }
}

上面将 Flight POJO 映射到名为 Flight 的数据库表,这对于从头开始设计的新应用程序来说似乎相当合理。

但是,当必须使用遗留表和逻辑来开发应用程序时,使用 JPA 等 ORM 解决方案是一个可行的解决方案吗?

换句话说,是否可以同时使用 ORM 表和旧表?如何将旧表映射到 POJO?

我见过类似的问题,例如 legacy tables to jpa2 entitiesgenerate object @entities from database,但是它们都谈论将表“逆向工程”为对象的工具。难道不应该有一个选项可以手动完成,一旦正确映射就让 ORM 框架管理它们吗?这一切似乎都是黑客在做我所要求的事情,但是在我看来,将遗留数据库转换为 ORM 管理的数据库应该是规则。

谢谢

最佳答案

是的,您可以对现有数据库使用 ORM。我不知道现在 JPA 有多灵活(没有跟上所有规范的更改),但我知道 Hibernate 在将对象与现有表匹配时非常灵活(支持各种传统配置)。没有什么可以阻止您并行使用 ORM 和直接 JDBC(如果您通过两个 channel 管理更新,可能会出现一些同步问题)。事实上,对于某些场景,直接 JDBC 可能是有意义的(例如临时报告)。再说一次,我不确定 JPA 提供了什么,但我确实知道 hibernate Session 允许您访问底层 JDBC 连接,以便您可以在需要时运行 native SQL。

关于java - JPA 与旧版 native SQL 共存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16741261/

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