我一直在阅读几篇文章,什么是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框架通常是不合适的。

相关问题

  • Java EE Architecture - Are DAO's still recommended when using an ORM like JPA 2?
  • Using an ORM or plain SQL?
  • ORM vs Handcoded Data Access Layer
  • 10-06 06:56
    查看更多