我一直在阅读几篇文章,什么是JPA (Java Persistent API)
以及支持它的供应商(DataNucleus,JBoss Hibernate等)。
我没有ORM(对象关系映射)的经验。
到目前为止,我所做的就是使用DTO和DAO编写自己的数据库类。到目前为止,我对我所拥有的感到满意,但是想知道为什么人们通过包含SQL 的Java文件使用JPA。
对我来说,我觉得编写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持久查询语言,并且它针对实体对象进行操作
而不是直接使用db表。
我的理解(如果我错了,请纠正我)是这里的实体对象与我的DTO对象相同(有点像bean吗?)
但是无论如何.. JPA相对于在文件中编写纯SQL的真正好处是什么?
好像使用JPA所需的注释并使SQL不可读对我来说真的没有吸引力。
如果您需要进一步说明,请告诉我。我是这个主题的新手,希望听听您的意见。
最佳答案
某些项目要求工程师将更多的精力放在对象模型上,而不是在用于访问数据存储的实际SQL查询上。这个问题实际上可以解释为
在不同的情况下可以有不同的答案。
大多数项目都可以从拥有域模型中受益,而持久性是第二个关注点。使用JPA(实现)或大多数其他ORM框架,可以将所有实体(即数据库中的表)建模为Java中的类。此外,还可以将行为嵌入这些类中,从而获得行为丰富的域模型。此模型中的实体可以有多种用途,包括替换DTO以便跨层传输数据的目的。
就是说,在某些地方ORM框架可能无法直接解决该问题,尤其是当数据模型已经建立时,或者当人们正在使用将数据库表映射到Java类的遗留系统时,这并非易事。并且在某些情况下,如果需要从ORM框架生成的SQL中完全消除问题,那么ORM框架通常是不合适的。
相关问题