2009-07-06 2 views
36

학교에서 Java를 공부 한 데에는 DAO 패턴 (Data access object)을 잘 알고 있습니다. 그러나 직장에서 나는 .NET을 사용한다. .NET에서는 종종 DAL (Data Access Layer)에 대해 이야기합니다. 나에게 그들의 목적은 꽤 비슷해 보인다. 그래서 질문은 DAO와 DAL은 기본적으로 같은 것입니까? DAL이라는 용어는 단지 Data Access Objects과 섞이지 않았습니까?DAO와 DAL의 차이점은 무엇입니까?

+1

DAL을 데이터 추상화 레이어라고 생각했습니다. – davidsleeps

답변

57

DAL (데이터 액세스 계층)은 비즈니스 논리 계층과 지속성/저장 계층간에 존재하는 시스템 계층입니다. DAL은 단일 클래스이거나 여러 데이터 액세스 개체 (DAO)로 구성 될 수 있습니다. 비즈니스 레이어가 대화 할 수 있도록 상단에 파사드가있어 데이터 액세스 로직의 복잡성을 숨길 수 있습니다. Hibernate와 같은 써드 파티 객체 - 관계형 매핑 도구 (ORM) 일 수 있습니다.

DAL은 아키텍처 용어이며 DAO는 디자인 세부 사항입니다.

+4

getCustomer()와 같은 메소드가있는 DAO 인터페이스가 있다고 가정 해 봅니다. 인터페이스는 SqlServerDAO 클래스에 의해 구현됩니다. getCustomer()가 호출되면 SqlServerDAO는 DB에서 데이터를 가져와 Customer-object를 만들고 반환합니다. 이 경우 DAL은 DAO 인터페이스와 SqlServerDAO 클래스로 구성됩니다. 맞습니까? – simoraman

+0

그건 나에게 들리는데. –

+6

+1 "DAL은 건축 용어이고 DAO는 디자인 세부 사항입니다." – svirk

11

데이터 액세스 계층에는 많은 데이터 액세스 개체가 포함됩니다.

데이터베이스 논리와 구현에서 비즈니스 논리를 분리하는 것이 주된 역할입니다.

예를 들어 DAL에는 하나 이상의 데이터 액세스 개체를 통해 여러 테이블, 쿼리 또는 저장 프로 시저에서 데이터를 검색하는 단일 메서드가있을 수 있습니다.

데이터베이스 구조, DAO, 저장 프로 시저 또는 데이터베이스 형식을 변경해도 비즈니스 논리가 변경되어서는 안되며 DAL에서 제공하는 디커플링에 미치지 못합니다.

관련 문제