티스토리 뷰
**DAO(Data Access Object)**는 이름 그대로 **'데이터 접근을 전담하는 객체'**입니다.
최근 스프링 부트(Spring Boot)와 JPA를 사용하는 환경에서는 Repository라는 용어를 더 많이 쓰지만, MyBatis나 JDBC를 직접 사용하는 환경에서는 여전히 DAO라는 명칭을 자주 사용합니다.
어떤 경우에 DAO를 쓰는지, 그리고 왜 쓰는지 핵심을 짚어드릴게요.
1. DAO를 사용하는 주요 상황
① DB 로직과 비즈니스 로직을 분리하고 싶을 때 (관심사 분리)
서비스(Service) 계층에서 SQL 쿼리를 직접 작성하거나 DB 연결 코드를 넣으면 코드가 매우 지저분해집니다. 이때 **"DB랑 대화하는 건 네가 다 해"**라고 역할을 맡기는 대상이 DAO입니다.
② MyBatis나 JDBC를 사용할 때
MyBatis 설정에서 인터페이스와 XML을 연결하거나, SqlSession을 직접 호출하여 데이터를 가져오는 로직을 캡슐화할 때 DAO 클래스를 생성합니다.
③ 데이터 소스가 여러 개일 때
애플리케이션이 하나 이상의 데이터베이스(예: MySQL + Oracle)에 접근해야 한다면, 각 DB에 맞는 DAO를 만들어 서비스 계층에 일관된 인터페이스를 제공할 수 있습니다.
2. DAO vs Repository (차이점이 뭔가요?)
두 용어는 혼용되기도 하지만, 엄밀히 따지면 지향점이 조금 다릅니다.
| 구분 | DAO (Data Access Object) | Repository (저장소) |
| 관점 | 데이터베이스 중심 (Table 중심) | 도메인 객체 중심 (객체 상태 관리) |
| 역할 | SQL을 실행하고 데이터를 CRUD 하는 데 집중 | 객체를 컬렉션처럼 관리하며 비즈니스적 의미를 가짐 |
| 기술 | 주로 MyBatis, JDBC에서 많이 사용 | 주로 JPA, Hibernate에서 많이 사용 |
3. DAO를 쓰면 얻는 이점
- 코드의 재사용성: 동일한 Select 쿼리가 여러 서비스에서 필요할 때, DAO의 메서드 하나만 호출하면 됩니다.
- 유지보수 용이: DB 테이블 구조가 변경되어 쿼리를 수정해야 할 때, 서비스 코드는 건드리지 않고 DAO 내부만 수정하면 됩니다.
- 낮은 결합도: 서비스 계층은 어떤 DB 기술(MyBatis인지 JDBC인지)이 쓰이는지 몰라도 데이터만 잘 받아오면 됩니다.
4. 흐름 속의 DAO 위치
- Service: "회원 가입을 처리해줘." (비즈니스적 명령)
- DAO: (내부적으로) INSERT INTO members ... 실행. (기술적 처리)
요약하자면
"DB와 관련된 모든 지저분한 코드(SQL, 커넥션 등)를 한곳에 몰아넣고 관리하고 싶을 때" DAO를 사용한다고 보시면 됩니다.
※ 해당 내용은 Google Gmini3.0에서 작성되었습니다.
'WEB > 자바' 카테고리의 다른 글
| MyBatis 환경에서 DAO와 XML(Mapper) (0) | 2026.03.25 |
|---|---|
| Dao dto를 사용하고 dao에서 selectList selectOne를 사용하는 경우는 jpa일까요? (1) | 2026.03.25 |
| 자바 스프링 기반 웹 애플리케이션의 전체적인 동작 흐름 (0) | 2026.03.25 |
| 자바 스프링프레임워크란? (0) | 2026.03.25 |
| Java- Controller / Service/ Dto / Xml (0) | 2026.03.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- lg그램pro #lg그램 #노트북 #노트북추천 #lg노트북
- 정보처리기사 #정보처리기사요약 #정보처리기사요점정리
- 무료폰트 #무료웹폰트 #한수원한돋움 #한수원한울림 #한울림체 #한돋움체
- 자바스크립트break
- // 사진직: 데이터가 없으면 DEFAULT_IMG 사용 const profileSrc = (d.img && d.img !== "") ? d.img : DEFAULT_IMG;('#user-photo').attr('src'
- iptime와이파이증폭기 #와이파이증폭기설치
- 와이파이증폭기추천 #와이파이설치
- 썬크림 #닥터지썬크림 #내돈내산 #내돈내산썬크림 #썬크림추천 #spf50썬크림 #닥터지메디유브이울트라선
- 좋은책 #밥프록터 #부의원리
- 쇼팬하우어 #좋은책
- 자바스크립트countiue
- 좋은책
- 자바스크립트 #javascript #math
- css미디어쿼리 #미디어쿼리 #mediaquery
- jQuery #jQuery이미지슬라이드 #이미지슬라이드
- SQL명령어 #SQL
- 탭메뉴자바스크립트
- 파비콘사이즈
- jdk #jre
- 증폭기 #아이피타임증폭기
- echart
- 연명의료결정제도 #사전연명의료의향서 #사전연명의료의향서등록기관 #광주사전연명의료의향서
- 자바스크립트정규표현식
- 광주분식 #광주분식맛집 #상추튀김 #상추튀김맛집 #광주상추튀김
- ajax
- 바지락칼국수 #월곡동칼국수 #칼국수맛집
- thymeleaf
- sw기술자평균임금 #2025년 sw기술자 평균임금
- 파비콘 #파비콘 사이트에 적용
- 테스크탑무선랜카드 #무선랜카드 #아이피타이무선랜카드 #a3000mini #무선랜카드추천
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
글 보관함

