【问题标题】:what ORM use to get access to the databaseORM 使用什么来访问数据库
【发布时间】:2014-06-25 10:51:17
【问题描述】:

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

我的意思是——Mybatis 或 Hibernate 或其他 orms 使用什么来访问数据库并运行查询? JPA的实现? JDBC?他们的引擎盖下是什么?他们使用数据库驱动程序?

我很好奇

【问题讨论】:

    标签: java hibernate jpa jdbc mybatis


    【解决方案1】:

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

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

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

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

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

    最好的方法是使用data layer stack 方法,您可以在其中挑选和混合最好的 Hibernate/JDBC/JOOQ。

    【讨论】:

    • 谢谢,很高兴你喜欢我的回答。
    【解决方案2】:

    Hibernate 和 EclipseLink 等 JPA 实现使用 JDBC 进行连接和 SQL 执行,而后者又使用 DB 驱动程序。

    这是 JPA 规范的目的之一 - 从您的应用程序代码中抽象出 DB 连接以及 SQL 生成和执行。

    【讨论】:

    • 所以基本上 JDBC 无处不在?
    • 是的 - JPA 认为不重要的 JDBC 详细信息被隐藏了,但它们仍然可以正常工作(有时还会出现泄漏问题)。
    猜你喜欢
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    相关资源
    最近更新 更多