◼ DAO (Data Access Object)
- DAO는 데이터베이스와의 상호작용을 담당하는 객체
- 데이터베이스에 대한 CRUD(Create, Read, Update, Delete) 작업을 캡슐화하여 제공
public class EmployeeDAO {
private SqlSessionFactory sqlSessionFactory;
public EmployeeDAO(SqlSessionFactory sqlSessionFactory) {
this.sqlSessionFactory = sqlSessionFactory;
}
public void updateSal(int empno, int sal) {
SqlSession session = sqlSessionFactory.openSession();
try {
Map<String, Object> params = new HashMap<>();
params.put("empno", empno);
params.put("sal", sal);
session.update("EmployeeMapper.updateSal", params);
session.commit();
} finally {
session.close();
}
}
}
◼ DTO (Data Transfer Object)
- DTO는 계층 간 데이터 전송을 목적으로 하는 객체
- 데이터의 전달을 위해 주로 getter와 setter 메서드로 구성된 단순한 객체
public class EmployeeDTO {
private int empno;
private int sal;
// Getter와 Setter 메서드
public int getEmpno() {
return empno;
}
public void setEmpno(int empno) {
this.empno = empno;
}
public int getSal() {
return sal;
}
public void setSal(int sal) {
this.sal = sal;
}
}
◼ VO (Value Object)
- VO는 주로 비즈니스 로직에서 사용되는 객체로, 한 번 생성된 후 불변성을 가지는 것이 일반적
- 데이터베이스와 직접적인 상호작용보다는, 애플리케이션 내에서 데이터의 의미를 표현하기 위해 사용
public class EmployeeVO {
private final int empno;
private final int sal;
public EmployeeVO(int empno, int sal) {
this.empno = empno;
this.sal = sal;
}
public int getEmpno() {
return empno;
}
public int getSal() {
return sal;
}
}
◼ VO와 HashMap의 차이
- VO는 명확하고 타입 안전하며 불변인 반면, HashMap은 유연하고 동적이지만 타입 안전성이 부족하고 구조가 명확하지 않다.
// VO 사용
EmployeeVO employee = new EmployeeVO(1, 5000);
int empno = employee.getEmpno();
int salary = employee.getSal();
// HashMap 사용
Map<String, Object> employeeMap = new HashMap<>();
employeeMap.put("empno", 1);
employeeMap.put("sal", 5000);
int empnoMap = (int) employeeMap.get("empno");
int salaryMap = (int) employeeMap.get("sal");
◼ sqlsession
데이터베이스와 상호작용하는 주요 인터페이스
◼ sqlsession 주요기능 4가지
- SQL 실행 : select, insert, update, delete 같은 SQL 명령어를 실행
- 트랜잭션 관리 : 트랜잭션을 시작하고, 커밋하거나 롤백
- 매퍼 인터페이스 호출 : MyBatis 매퍼 인터페이스 메서드를 호출하여 SQL을 실행
- 세션 관리 : 세션을 열고 닫는 기능을 제공
◼ sqlsession 주요 메서드
1. 데이터 조회
- selectOne(String statement): 단일 행을 반환하는 조회
- selectOne(String statement, Object parameter): 파라미터를 사용한 단일 행 조회
- selectList(String statement): 여러 행을 반환하는 조회
- selectList(String statement, Object parameter): 파라미터를 사용한 여러 행 조회
2. 데이터 삽입
- insert(String statement): 데이터를 삽입
- insert(String statement, Object parameter): 파라미터를 사용한 데이터 삽입
3. 데이터 업데이트
- update(String statement): 데이터를 업데이트
- update(String statement, Object parameter): 파라미터를 사용한 데이터 업데이트
4. 데이터 삭제
- delete(String statement): 데이터를 삭제
- delete(String statement, Object parameter): 파라미터를 사용한 데이터 삭제
5. 트랜잭션 관리
- commit(): 현재 트랜잭션을 커밋
- commit(boolean force): 강제 커밋
- rollback(): 현재 트랜잭션을 롤백
- rollback(boolean force): 강제 롤백
6. 세션 관리
- close(): 세션을 닫음
- clearCache(): 세션 캐시를 비움
'STUDY' 카테고리의 다른 글
undefined vs null 차이 (0) | 2025.03.12 |
---|---|
HttpServletRequest 객체 (1) | 2024.09.16 |
[Java] Spring Boot vs 전자정부프레임워크 (0) | 2024.08.07 |
Maven 과 Gradle (1) | 2024.07.30 |