ORM和DAL之间有什么区别?
我读过这两本书,但它让我更加困惑。我试图找出不同之处(和相似之处),但无法说服自己。它们都是业务逻辑和数据库之间的中间层。有区别还是相同?在Java中,当提到对象关系映射时,最常见的场景是将表映射到Java对象。一个非常流行的对象关系映射器是Hibernate。假设你有一排桌子的汽车。当然,它有很多列,例如Year、Make、Model等。ORM会将这个表行映射到一个Car.java类,其中的数据成员对应于该行的列ORM和DAL之间有什么区别?,orm,data-access-layer,Orm,Data Access Layer,我读过这两本书,但它让我更加困惑。我试图找出不同之处(和相似之处),但无法说服自己。它们都是业务逻辑和数据库之间的中间层。有区别还是相同?在Java中,当提到对象关系映射时,最常见的场景是将表映射到Java对象。一个非常流行的对象关系映射器是Hibernate。假设你有一排桌子的汽车。当然,它有很多列,例如Year、Make、Model等。ORM会将这个表行映射到一个Car.java类,其中的数据成员对应于该行的列 映射发生在数据访问层内部,该层由执行转换的类组成。此外,您可能拥有服务类,这些服
映射发生在数据访问层内部,该层由执行转换的类组成。此外,您可能拥有服务类,这些服务类根据特定条件(查询)提供特定的Java对象。一个例子是,假设您有一个具有用户的应用程序。您可能有一个UserService.java类和一个getAllUsersOrssortedByLastName()类来执行该操作。这将涉及利用活动db连接,执行适当的查询以获取用户行,将这些用户行放入用户Java对象,将这些User.Java对象放入列表,最后在返回之前处理该列表(如果需要)。实现我所描述的功能都将在应用程序的数据访问层中实现。您可以使用ORM来执行表行和Java对象之间的映射,反之亦然。ORM是一种通用的编程方法,它以一种将系统中的数据显示(并允许您使用)为所选编程语言中的对象的方式来处理系统中的数据。即使数据来自与所选编程语言无关的源。通过对象“贴面”与数据交互的抽象概念是ORM 另一方面,DAL只是一种编程语言提供的使处理存储数据更容易的整个集合的名称。它实际上是一个方便的术语,用于谈论“处理存储数据的所有API” 并将其联系在一起:“所选编程语言的数据访问层可以使用对象关系映射。”ORM(对象/关系映射器):
- 它是一个库/工具,用于执行输入SQL查询(某些ORM也会为您生成查询),并将输出DataReader(或其他语言中的等效对象)转换(映射)为强类型对象。这是任何ORM的基本特性
- 也就是说,它是数据存储和应用程序之间的层
- ORM的核心作用是映射;它总是(大部分?)返回强类型对象。在极少数情况下,它可能返回语言提供的基本数据类型中的值,如
、int
等string
- 这是应用不可知的;除了您必须为每个应用程序/数据存储单独配置之外
- 这只涉及RDBMS
- 一些高级ORM(完整ORM)可以用作DAL;这主要是一个设计决策
- 由于与应用程序无关,这无法实现特定的持久性逻辑
- 它是一个处理所有数据需要的层。但这与ORM不同
- 实际上,这个可以在内部使用ORM进行任何RDBMS通信。虽然DAL也可以在不使用任何ORM的情况下进行设计
- DAL可能返回强类型对象,但并非总是必需的
- DAL可以与任何形式的数据存储进行通信,包括Web API、XML、RDBMS
- 映射可能是DAL的一部分,也可能不是,这取决于DAL的设计方式
- 这是特定于应用程序的
- 有不同的模式可用于实现DAL作为数据访问对象或存储库
- 这是为特定的应用程序而设计的,可能包括特定的持久性逻辑,如数据加密