[java] Java의 데이터 액세스 오브젝트 (DAO)

나는 문서를 살펴보고라는 용어를 발견했습니다 DAO. 데이터 액세스 개체라는 것을 알았습니다. 누군가 이것이 실제로 무엇인지 설명해 주시겠습니까?

나는 그것이 다른 유형의 소스에서 데이터에 액세스하기위한 일종의 인터페이스라는 것을 알고 있습니다.이 작은 연구 중 데이터 소스 또는 데이터 소스 객체라는 개념에 부딪 쳤고 일이 엉망이되었습니다.

나는 DAO그것이 어디에 사용되는지에 관해서 프로그래밍 방식으로 무엇인지 알고 싶다 . 어떻게 사용 되나요? 매우 기본적인 것들로부터이 개념을 설명하는 페이지에 대한 링크도 높이 평가됩니다.



답변

데이터 액세스 개체는 기본적으로 기본 데이터베이스 또는 다른 지속성 저장소에 대한 액세스를 제공하는 개체 또는 인터페이스입니다.

http://en.wikipedia.org/wiki/Data_access_object 에서 해당 정의

시퀀스 다이어그램도 확인하십시오 :
http://www.oracle.com/technetwork/java/dataaccessobject-138824.html

간단한 예를 통해 개념을 이해하는 데 도움이 될 수 있습니다.

직원을 대표 할 엔터티가 있다고 가정 해 보겠습니다.

public class Employee {

    private int id;
    private String name;


    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

}

직원 엔터티는 Employee데이터베이스 의 해당 테이블에 유지됩니다 . 직원 엔터티를 조작하는 데 필요한 데이터베이스 작업을 처리하는 간단한 DAO 인터페이스는 다음과 같습니다.

interface EmployeeDAO {

    List<Employee> findAll();
    List<Employee> findById();
    List<Employee> findByName();
    boolean insertEmployee(Employee employee);
    boolean updateEmployee(Employee employee);
    boolean deleteEmployee(Employee employee);

}

다음으로 우리는 인터페이스가 SQL 서버를 처리하고 다른 인터페이스는 플랫 파일 등을 처리하기위한 구체적인 구현을 제공해야합니다.


답변

데이터 액세스 오브젝트 (DAO) 란 ?

그것은 인 객체 / 인터페이스 에 사용되며, 액세스 데이터 의 데이터 저장 데이터베이스.

우리가 DAO를 사용하는 이유 :

데이터베이스와 같은 데이터 리소스에서 데이터 검색을 추상화합니다. 이 개념은 “데이터 리소스의 클라이언트 인터페이스와 데이터 액세스 메커니즘을 분리하는 것”입니다.

데이터에 직접 액세스 할 때 발생하는 문제는 데이터 소스가 변경 될 수 있다는 것입니다. 예를 들어, 애플리케이션이 Oracle 데이터베이스에 액세스하는 환경에 배치되어 있다고 가정하십시오. 그런 다음 Microsoft SQL Server를 사용하는 환경에 배포됩니다. 응용 프로그램에서 저장 프로 시저 및 데이터베이스 별 코드 (예 : 숫자 시퀀스 생성)를 사용하는 경우 응용 프로그램에서 해당 프로 시저를 어떻게 처리합니까? 두 가지 옵션이 있습니다.

  • Oracle 대신 SQL Server를 사용하도록 응용 프로그램을 다시 작성하거나 차이점을 처리하기 위해 조건부 코드를 추가하십시오. 또는
  • 응용 프로그램 논리와 데이터 액세스 사이에 계층을 만듭니다.

모두 DAO Pattern 이라고하며 다음과 같이 구성됩니다.

  • 데이터 액세스 개체 인터페이스 -이 인터페이스 모델 개체에서 수행 할 표준 작업정의합니다 .
  • Data Access Object 구체적 클래스 -이 클래스는 위의 인터페이스를 구현합니다. 이 클래스는 데이터베이스 / xml 또는 기타 스토리지 메커니즘 일 수 있는 데이터 소스에서 데이터를 가져옵니다 .
  • 모델 객체 또는 값 객체 -이 객체는 DAO 클래스를 사용하여 검색된 데이터를 저장 하는 get / set 메소드포함하는 간단한 POJO 입니다.

이 예를 확인하십시오. 그러면 더 명확하게 지워집니다.

예제
나는이 것들이 DAO에 대한 당신의 이해를 어느 정도까지 분명히 해 주었다고 가정한다.


답변

DAO (Data Access Object)는 엔터프라이즈 응용 프로그램에서 매우 사용되는 디자인 패턴입니다. 기본적으로 모든 소스 (DBMS, XML 등)의 데이터에 액세스하는 데 사용되는 모듈입니다. 다음과 같은 몇 가지 예를 읽으십시오.

DAO 예

원본 DAO 패턴 을 구현하는 방법에는 여러 가지 가 있으며 작업을 단순화 할 수있는 많은 프레임 워크가 있습니다. 예를 들어, iBatis 또는 Hibernate와 같은 ORM (Object Relational Mapping) 프레임 워크는 SQL 조회 결과를 Java 오브젝트에 맵핑하는 데 사용됩니다.

도움이 되길 바랍니다.


답변

데이터 액세스 개체 패턴 또는 DAO 패턴은 하위 수준의 데이터 액세스 API 또는 작업을 고급 비즈니스 서비스와 분리하는 데 사용됩니다. 다음은 데이터 액세스 개체 패턴의 참가자입니다.

데이터 액세스 개체 인터페이스-이 인터페이스는 모델 개체에서 수행 할 표준 작업을 정의합니다.

Data Access Object 구체적 클래스-이 클래스는 위의 인터페이스를 구현합니다. 이 클래스는 데이터베이스 / xml 또는 기타 스토리지 메커니즘 일 수있는 데이터 소스에서 데이터를 가져옵니다.

모델 객체 또는 값 객체-이 객체는 DAO 클래스를 사용하여 검색된 데이터를 저장하는 get / set 메소드를 포함하는 간단한 POJO입니다.

샘플 코드는 여기 ..


답변

DAO와 ORM이 모든 언어로 사용되므로 Java에 국한되지 않고 일반적입니다.

DAO를 이해하려면 먼저 ORM (Object Relational Mapping)을 이해해야합니다. 이는 “name”및 “age”열이있는 “person”이라는 테이블이있는 경우 해당 테이블에 대한 오브젝트 템플리트를 작성 함을 의미합니다.

type Person {
name
age
}

이제 특정 쿼리를 작성하는 대신 DAO의 도움으로 모든 사람을 가져 와서 사용중인 db 유형 (오류가 발생할 수 있음)에 대해 대신 수행하십시오.

list persons = DAO.getPersons();
...
person = DAO.getPersonWithName("John");
age = person.age;

DAO 추상화를 직접 작성하지 말고 사용중인 언어 및 프레임 워크에 따라 일반적으로 일부 오픈 소스 프로젝트의 일부입니다.

이제 주요 질문입니다. ” .. 사용되는 곳 .. “. 일반적으로 복잡한 비즈니스 및 도메인 특정 코드를 작성하는 경우 DAO가 없으면 인생이 매우 어려워집니다. 물론 제공된 ORM 및 DAO를 사용할 필요가 없으며, 자체 추상화 및 기본 쿼리를 작성할 수 있습니다. 나는 과거에 그것을했고 거의 항상 후회했습니다.


답변

oracle 웹 사이트에서 찾을 수있는 가장 좋은 예 (설명과 함께)는 여기에 있습니다 . 또 다른 좋은 tuturial은 여기 에서 찾을 수 있습니다 .


답변

너무 많은 설명과 혼동하지 마십시오. DAO : 이름 자체에서 Object를 사용하여 데이터에 액세스하는 것을 의미합니다. DAO는 다른 비즈니스 로직과 분리되어 있습니다.