【发布时间】:2014-06-25 10:51:17
【问题描述】:
问题是我不明白 orms 如何访问数据库。使用 JDBC,我们创建连接、编写语句并获得结果。但是orm?
我的意思是——Mybatis 或 Hibernate 或其他 orms 使用什么来访问数据库并运行查询? JPA的实现? JDBC?他们的引擎盖下是什么?他们使用数据库驱动程序?
我很好奇
【问题讨论】:
标签: java hibernate jpa jdbc mybatis
问题是我不明白 orms 如何访问数据库。使用 JDBC,我们创建连接、编写语句并获得结果。但是orm?
我的意思是——Mybatis 或 Hibernate 或其他 orms 使用什么来访问数据库并运行查询? JPA的实现? JDBC?他们的引擎盖下是什么?他们使用数据库驱动程序?
我很好奇
【问题讨论】:
标签: java hibernate jpa jdbc mybatis
JDBC 是与数据库交互的低级机制,但它是任何 Java 数据库交互的基础。 JDBC 不提供任何事务管理集成,因为它只允许您实现本地事务(基于当前数据库连接提交/回滚)。它也很冗长,在大型企业应用程序中,有数千个查询,向基表添加新列简直是痛苦的,因为您必须更新数以千计的现有查询。
除了对象到关系映射的能力之外,ORM 工具还具有许多其他有用的功能:
但您不必只使用 ORM 工具。事实上,这是大型应用程序的反模式。
您通常将 Hibernate 与本机查询或 JOOQ 混合使用以从数据库特定功能(窗口函数、公用表表达式等)中受益
最好的方法是使用data layer stack 方法,您可以在其中挑选和混合最好的 Hibernate/JDBC/JOOQ。
【讨论】:
Hibernate 和 EclipseLink 等 JPA 实现使用 JDBC 进行连接和 SQL 执行,而后者又使用 DB 驱动程序。
这是 JPA 规范的目的之一 - 从您的应用程序代码中抽象出 DB 连接以及 SQL 生成和执行。
【讨论】: