java - ORM 使用什么来访问数据库

标签 java hibernate jpa jdbc mybatis

问题是我不明白 orms 如何访问数据库。使用 JDBC,我们创建连接、编写语句并获取结果。但是奥姆?

我的意思是 - Mybatis 或 Hibernate 或其他 orms 使用什么来访问数据库并运行查询? JPA 的实现?数据库连接?他们的幕后黑手是什么?他们使用数据库驱动程序?

我很好奇

最佳答案

JDBC 是一种与数据库交互的低级机制,但它是任何 Java 数据库交互的基础。 JDBC 不提供任何事务管理集成,因为它只允许您实现本地事务(基于当前数据库连接提交/回滚)。它也很冗长,在大型企业应用程序上,有数千个查询,向基表添加新列非常痛苦,因为您必须更新无数的现有查询。

除了对象到关系映射的能力之外,ORM 工具还具有许多其他有用的功能:

  1. 复杂实体树上的乐观锁定
  2. 多态查询
  3. 本地和 XA 事务管理集成
  4. 架构生成
  5. 独立于数据库的基本查询和 DML

但是您不必只使用 ORM 工具。事实上,这是大型应用程序的反模式。

您通常将 Hibernate 与 native 查询混合使用,或 JOOQ从数据库特定功能(窗口函数、公用表表达式等)中受益

最好的方法是使用 data layer stack方法,您可以选择并混合 Hibernate/JDBC/JOOQ 的优点。

关于java - ORM 使用什么来访问数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24406662/

相关文章:

java - 如何在JPA中的不同关系中使用相同的实体?

java - 分水岭图像分割JavaCv,分割未发生

java - 如何获取Listview中单选按钮的值点击Android中的按钮

java - Maven Dll依赖问题

java - 创建 "Service"bean 时出错

java - Hibernate (HQL) 查找参数列表中缺失的 id

java - 使用类路径中的 .p12 文件作为 GoogleCredential

mysql - 想要在 spring mvc 3 中为我的登录表单使用 session 变量

spring - Jackson @ResponseBody 上的内部服务器错误

java - 循环是否每次都需要更长的时间来执行?