- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我一直在阅读几篇文章,什么是 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 持久查询语言,它针对实体对象进行操作而不是直接使用 db 表。
我的理解(如果我错了,请纠正我)是这里的实体对象与我的 DTO 对象相同(有点像 bean?)
但无论如何.. 与在我的文件中编写纯 SQL 相比,JPA 的真正好处是什么?似乎使用 JPA 所需的注释并使 SQL 不可读对我来说并不是很有吸引力..
如果您需要更多说明,请告诉我,我是这个主题的新手,想听听一些意见。
最佳答案
Why use JPA instead of directly writing SQL query on Java File (i.e. directly to JDBC) ?
某些项目要求工程师更多地关注对象模型,而不是用于访问数据存储的实际 SQL 查询。这个问题其实可以理解为
Why should one use an ORM framework ?
在不同的上下文中可以有不同的答案。
大多数项目都可以从拥有域模型中受益,而持久性是第二个问题。使用 JPA(实现)或大多数其他 ORM 框架,可以将所有实体(即数据库中的表)建模为 Java 中的类。此外,还可以将行为嵌入到这些类中,从而实现行为丰富的域模型。此模型中的实体可以有多种用途,包括替换 DTO 以跨层传输数据的目的。
也就是说,在某些地方 ORM 框架可能无法直接解决该问题,尤其是当数据模型已经建立时,或者当您正在处理将数据库表映射到 Java 类的遗留系统时琐碎的练习。而且在某些情况下,如果需要彻底调整 ORM 框架生成的 SQL,那么 ORM 框架通常不适合。
相关问题
关于java - 为什么使用 JPA 而不是使用 JDBC 编写 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4406310/
我一直在使用 Databricks JDBC 驱动程序版本 2.6.22,并尝试升级到 2.6.27。但是,升级后我收到消息说我的 JDBC URL 在尝试连接时无效。这些 JDBC URL 与旧版本
似乎JDBC Spec没有详细说明数据源连接池中alive or idle connections的准确含义。它只是具体实现吗? DBCP2如何或 HikariCP实际检查连接状态? 下面没有事件事务
在“XPages 扩展库”一书中,第 12 章,第 409 页有一个 JDBC 连接文件的例子: org.apache.derby.jdbc.EmbeddedDriver jdbc:
谁能告诉我 jdbc 是如何工作的?它如何设法与 DBMS 通信?因为 DBMS 可能是用其他编程语言编写的。 最佳答案 与数据库的通信由 JDBC 驱动程序处理,这些驱动程序可以使用各种策略与数据库
我想知道是否有人可以帮助我解决这个问题。我在尝试使用 Spring JDBC 编写代码时遇到了一个问题。当我运行服务器时,我收到了标题中提到的消息。我google了一下,有人说你应该导入ojdbc.j
我只是想运行一个示例 hivejdbc 客户端程序,但它给我一个内存不足的错误。 import java.sql.SQLException; import java.sql.Connection; i
我需要将 Google Spreadsheet 与 JasperReports Server 一起使用,为此我需要一个用于 Google Spreadsheet 的 JDBC 连接器。 我找到了这个
我需要将大量行(最多 100,000 行)插入到 6 个不同的 DB2 表中。我正在使用 Java JDBC 来完成它。我想在单个数据库事务中完成所有操作,以便在遇到任何问题时可以回滚整个操作。在某处
再次为自己是 Jmeter 新手道歉——我对 JDBC 请求有点困惑——我在过去的 3 个小时里浏览了这个网站上的帖子——但我找不到任何相关的东西(除非我我错过了一些东西)。 我的环境:Jmeter
我们正在创建一个带有 MySQL 后端的 XPages 应用程序。应用程序将被多个客户使用。每个都有自己的 NSF 数据库和相应的 MySQL 数据库。每个客户都有自己的 MySQL 用户名。我们正在
昨天我遇到了一个大问题。在我当前的项目中,我使用 Oracle 的 JDBC 的 ojdbc6 实现进行连接,但我还需要处理例如 oracle 8 数据库,这对于这个 JAR 是完全不可能的。 你会说
这个问题在这里已经有了答案: Closing JDBC Connections in Pool (3 个答案) 关闭 2 年前。 假设我有以下代码 DataSource source = (Data
我有 Informix 数据库,时间戳字段定义为 YEAR TO SECOND。 当我使用 JDBC rs.getString(column) 显示此字段时,它使用带毫秒的格式,因此此字段如下所示:
看完本教程之后; https://www.youtube.com/watch?v=ZnI_rlrei1s 我正在尝试使用logstash和jdbc获取我的本地主机mysql(使用laravel val
有人给我小费。 { "type": "jdbc", "jdbc": { "driver": "com.microsoft.sqlserver.jdbc.SQLServerDriver"
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我正在尝试从mysql表中将1600万个文档(47gb)索引为elasticsearch索引。我正在使用jparante's elasticsearch jdbc river执行此操作。但是,在创建河
我正在尝试使用JDBC河将我的MySQL数据库复制到我的ElasticSearch索引中。 但是,每当我启动服务器时,与MySQL表的count(*)相比,创建的文档数量就增加了一倍。我通过清空索引并
使用新的logstash jdbc 连接器: https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html后续的
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我是一名优秀的程序员,十分优秀!