我一直在阅读几篇文章什么是 JPA (Java Persistent API)
以及支持它的供应商(DataNucleus、JBoss Hibernate 等)
我没有 ORM(对象关系映射)方面的经验。
到目前为止,我所做的是使用 DTO 和 DAO 编写自己的数据库类。到目前为止,我对自己拥有的东西很满意,但想知道 为什么人们使用 JPA 而不是包含 SQL 的 Java 文件。
对我来说,我觉得像下面这样编写 DAO 类就可以了。
public class DAOUsers {
public void insertNewUser(DTO DtoUser) {
String query = "INSERT INTO users(username, address) " +
"VALUES(DtoUser.username , DtoUser.address)";
Executor.run(query);
}
}
我了解到 JPA 使用 JPQL,Java 持久查询语言,它针对实体对象而不是直接使用数据库表进行操作。
我的理解(如果我错了请纠正我)是这里的实体对象与我的 DTO 对象相同(有点像 bean?)
但是无论如何.. JPA 比在我的文件中编写纯 SQL 有什么真正的好处?似乎使用 JPA 所需的注释并使 SQL 不可读对我来说并不是很吸引人。
如果您需要更多说明,请告诉我,我是这个话题的新手,想听听一些意见。
原文由 Meow 发布,翻译遵循 CC BY-SA 4.0 许可协议
某些项目要求工程师更多地关注对象模型,而不是用于访问数据存储的实际 SQL 查询。这个问题实际上可以解释为
在不同的上下文中可以有不同的答案。
大多数项目都可以从领域模型中获益,持久性是第二个问题。使用 JPA(实现)或大多数其他 ORM 框架,可以将所有实体(即数据库中的表)建模为 Java 中的类。此外,还可以将行为嵌入到这些类中,从而实现行为丰富的领域模型。此模型中的实体可以有多种用途,包括替换 DTO 以跨层传输数据的用途。
也就是说,有些地方 ORM 框架可能无法直接解决问题,尤其是当数据模型已经建立时,或者当一个人正在使用将数据库表映射到 Java 类的遗留系统时。在某些情况下,如果需要绝对调整 ORM 框架生成的 SQL,那么 ORM 框架通常不适合。
相关问题