실제로 DAO 패턴을 사용하는 예시로는 회원 가입, 상품 등록, 주문 처리 등이 있습니다. 예를 들어, 회원 가입 기능을 구현할 때 DAO 패턴을 적용하면 다음과 같은 구조가 됩니다.

  1. Member 클래스: 회원 정보를 담는 클래스
  2. MemberDAO 인터페이스: 회원 정보를 CRUD하는 메서드를 정의한 인터페이스
public interface MemberDAO {
    public void insert(Member member);
    public Member select(int id);
    public void update(Member member);
    public void delete(int id);
}

  1. MemberDAOImpl 클래스: MemberDAO 인터페이스를 구현한 클래스
@Repository
public class MemberDAOImpl implements MemberDAO {
    @Autowired
    private SqlSession sqlSession;

    @Override
    public void insert(Member member) {
        sqlSession.insert("member.insert", member);
    }

    @Override
    public Member select(int id) {
        return sqlSession.selectOne("member.selectById", id);
    }

    @Override
    public void update(Member member) {
        sqlSession.update("member.update", member);
    }

    @Override
    public void delete(int id) {
        sqlSession.delete("member.delete", id);
    }
}

위의 코드에서 MemberDAOImpl 클래스는 MemberDAO 인터페이스를 구현하고 있습니다. 실제로 데이터베이스와의 연동은 SqlSession 객체를 사용하여 처리하고 있습니다. MemberDAOImpl 클래스를 사용하는 서비스 클래스에서는 MemberDAO 인터페이스의 메서드를 호출하기만 하면 됩니다.

@Service
public class MemberService {
    @Autowired
    private MemberDAO memberDAO;

    public void register(Member member) {
        memberDAO.insert(member);
    }

    public Member getMember(int id) {
        return memberDAO.select(id);
    }

    public void modify(Member member) {
        memberDAO.update(member);
    }

    public void remove(int id) {
        memberDAO.delete(id);
    }
}

위의 코드에서 MemberService 클래스는 MemberDAO 객체를 사용하여 회원 정보를 CRUD하는 메서드를 구현하고 있습니다. 실제로 데이터베이스와의 연동 코드는 MemberDAOImpl 클래스에서 처리되므로, MemberService 클래스에서는 간단한 메서드 호출만으로 회원 정보를 CRUD할 수 있습니다.