STUDY

MyBatis

minabee 2024. 8. 7. 11:22

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