ORM Technologies与JDBC?

Rac*_*hel 20 java orm database-connection jdbc

我的问题是关于ORM和JDBC技术,与JDBC和其他方式相比,您决定使用ORM技术的标准是什么?

谢谢.

Osc*_*Ryz 15

复杂.

ORM如果您的应用程序是域驱动的,并且对象之间的关系很复杂,或者您需要使用此对象来定义应用程序的功能.

JDBC/SQL如果您的应用程序非常简单,只是直接从数据库中提供数据,或者它们之间的关系很简单.

Martin Fowler撰写的"企业应用程序架构模式"一书更好地解释了这两种类型之间的差异:

请参阅:域模型事务脚本


sag*_*r27 13

JDBC

  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语法表达,并包含对多态查询的完全支持.Hibernate还支持本机SQL语句.它还选择了一种有效的方法来为应用程序执行数据库操作任务.
  4. Hibernate本身就提供了这种映射.表和应用程序对象之间的实际映射是在XML文件中完成的.如果数据库或任何表中有更改,则只需更改XML文件属性.
  5. Hibernate通过维护对象表映射本身来减少代码行,并以Java对象的形式将结果返回给应用程序.它使程序员免于手动处理持久数据,从而减少了开发时间和维护成本.
  6. Hibernate,具有透明持久性,缓存设置为应用程序工作空间.作为查询的结果,关系元组被移动到此缓存.如果客户端应用程序为同一次写入多次读取相同数据,则可以提高性 自动透明持久性允许开发人员更多地关注业务逻辑而不是此应用程序代码.
  7. Hibernate使开发人员能够为应用程序定义版本类型字段,由于这个定义的字段Hibernate每次将关系元组以Java类对象的形式更新到该表时更新数据库表的版本字段.因此,如果两个用户检索相同的元组然后修改它并且一个用户将这个修改过的元组保存到数据库,那么Hibernate会自动为这个元组更新版本.当其他用户尝试将更新的元组保存到数据库时,它不允许保存它,因为该用户没有更新的数据.