ORM Technologies vs JDBC?

2022-09-01 20:43:19

我的问题是关于ORM和JDBC技术,与JDBC相比,你会决定采用什么标准?

谢谢。


答案 1

京东

  1. 使用 JDBC,开发人员必须编写代码来将对象模型的数据表示形式映射到关系数据模型及其相应的数据库模式。
  2. 使用 JDBC,Java 对象与数据库表的自动映射(反之亦然)的转换将由开发人员使用代码行手动处理。
  3. JDBC 仅支持本机结构化查询语言 (SQL)。开发人员必须找出访问数据库的有效方法,即从多个查询中选择有效的查询来执行相同的任务。
  4. 使用 JDBC 处理具有大量数据库特定代码的持久性数据(数据库表)的应用程序。为将表数据映射到应用程序对象而编写的代码实际上是将表字段映射到对象属性,反之亦然。当表更改或数据库更改时,必须更改对象结构以及更改为映射表到对象/对象到表而编写的代码。
  5. 使用 JDBC,开发人员有责任处理 JDBC 结果集,并通过代码将其转换为 Java 对象,以便在应用程序中使用此持久性数据。因此,使用 JDBC,Java 对象和数据库表之间的映射是手动完成的。
  6. 使用 JDBC,缓存通过手动编码来维护。
  7. 在 JDBC 中,没有检查每个用户是否始终更新了数据。此检查必须由开发人员添加。

冬眠。

  1. Hibernate是一个灵活而强大的ORM解决方案,用于将Java类映射到数据库表。Hibernate本身使用XML文件来处理此映射,因此开发人员不需要为此编写代码。
  2. Hibernate 提供透明的持久性,开发人员无需在与 RDBMS 交互期间显式编写代码来将数据库表元组映射到应用程序对象。
  3. Hibernate提供了一种功能强大的查询语言Hibernate Query Language(独立于数据库类型),该语言以熟悉的SQL语法表示,并包括对多态查询的完全支持。休眠还支持本机 SQL 语句。它还为应用程序选择一种有效的方法来执行数据库操作任务。
  4. Hibernate 本身提供此映射。表和应用程序对象之间的实际映射是在 XML 文件中完成的。如果数据库或任何表中有更改,则只需要更改 XML 文件属性。
  5. Hibernate 通过维护对象表映射本身来减少代码行,并以 Java 对象的形式将结果返回到应用程序。它使程序员无需手动处理持久性数据,从而减少了开发时间和维护成本。
  6. 休眠,使用透明持久性,缓存设置为应用程序工作空间。关系元组作为查询的结果移动到此缓存。如果客户端应用程序多次读取相同的数据以进行相同的写入,则可提高性能。自动透明持久性允许开发人员更多地关注业务逻辑,而不是此应用程序代码。
  7. Hibernate使开发人员能够为应用程序定义版本类型字段,由于此定义的字段Hibernate每次关系元组以Java类对象的形式更新到该表时都会更新数据库表的版本字段。因此,如果两个用户检索同一个元组,然后对其进行修改,并且一个用户将此修改后的元组保存到数据库,则 Hibernate 会自动更新此元组的版本。当其他用户尝试将更新的元组保存到数据库时,它不允许保存它,因为此用户没有更新的数据。

答案 2

复杂性。

奥姆如果你的应用程序是域驱动的,并且对象之间的关系很复杂,或者你需要让这个对象定义应用的功能。

JDBC/SQL如果您的应用程序足够简单,可以直接从数据库中呈现数据,或者它们之间的关系足够简单。

Martin Fowler的《企业应用程序架构的模式》(Patterns of Enterprise Application Architecture)一书更好地解释了这两种类型之间的差异:

请参见: 域模型事务脚本


推荐