순서
1. iBatis
2. SqlMapClient & SqlMapClientTemplate
3. 주요 메소드
✅ iBatis
➤ 특징
- 자바 오브젝트와 SQL문 사이에 자동 매핑 기능을 지원하는 ORM 프레임워크
- 공통 설정을 담은 XML 파일과 매핑 정보를 담은 XML 매핑 파일이 필요함
➤ 장점
- 자바 오브젝트만을 이용해 데이터 로직을 작성할 수 있게 해줌
- SQL을 자바 코드에서 분리해서 별도의 XML 파일 안에 작성하고 관리할 수 있음
- 오브젝트-SQL 사이의 파라미터 매핑 작업을 자동으로 해줌
- JPA나 Hibernate처럼 새로운 DB 프로그래밍 패러다임을 익혀야하는 부담이 없음
- 익숙한 SQL을 그대로 사용할 수 있으면서도 JDBC 코드 작성의 불편함을 제거해주고
도메인 오브젝트나 DTO를 중심으로 개발이 가능
✅ SqlMapClient & SqlMapClientTemplate
➤ SqlMapClient
- iBatis의 핵심 API는 SqlMapClient 인터페이스에 담겨 있어서
iBatis를 사용하려면 SqlMapClient를 구현한 오브젝트가 필요함
➤ SqlMapClientTemplate
- iBatis용 DAO는 SqlMapClient 빈을 DI 받아서 iBatis 기능을 이용하는데
SqlMapClient를 직접 사용하는 것보단 스프링이 제공하는 템플릿 오브젝트인 SqlMapClientTemplate을 이용해야
스프링 데이터 엑세스 기술이 제공하는 다양한 장점을 누릴 수 있음
- *DAO에서는 아래와 같이, 또는 @Autowired를 이용한 초기화 메소드로,
SqlMapClient 오브젝트를 *DI 받고 이를 이용해 SqlMqpClientTemplate 오브젝트를 만들어
인스턴스 변수에 저장해두고 사용하는 방법이 일반적
*DAO : 실제로 DB에 접근하는 객체
*DI : 의존성 주입 (https://for-your-information.tistory.com/22)
public class MemberDao {
private SqlMapClientTemplate sqlMapClientTemplate;
public void setSqlMapCLient(SqlMapClient sqlMapClient) {
sqlMapClientTemplate = new SqlMapClientTemplate(sqlMapClient);
}
}
✅ 주요 메소드
➤ 등록
- Object insert(String statementName)
- Object insert(String statementName, Object parameterObject)
public void insert(Member member) {
sqlMapClientTemplate.insert("insertMember", member);
}
➤ 수정
- int update(String statementName)
- int update(String statementName, Object parameterObject)
- void update(String statementName, Object parameterObject, int requiredRowsAffected)
public void update(Member member) {
sqlMapClientTemplate.update("updatetMember", member);
}
➤ 삭제
- int delete(String statementName)
- ine delete(String statementName, Object parameterObject)
- void delete(String statementName, Object parameterObject, int requiredRowsAffected)
public void deleteAll() {
sqlMapClientTemplate.delete("deleteAllMember");
}
➤ 조회
▶ 단일 로우 조회 queryForObject()
- Object queryForObject(String statementName)
- Object queryForObject(String statementName, Object parameterObject)
- Object queryForObject(String statementName, Object parameterObject, Object resultObject)
▶ 다중 로우 조회 queryForList()
- List queryForList(String statementName)
- List queryForList(String statementName, Object parameterObject)
- List queryForList(String statementName, int skipResults, int maxResults)
- List queryForList(String statementName, Object parameterObject, int skipResults, int maxResults)
등등
'개발 공부' 카테고리의 다른 글
[파이썬 슬라이스 사용하기] feat. 시퀀스 자료형 (0) | 2024.01.16 |
---|---|
[AWS LB(Load Balancer)] feat. ALB, NLB (2) | 2023.12.05 |
[미들웨어] feat. 클라우드 (0) | 2023.09.26 |
[예외 처리 방법] feat. 에러 (0) | 2023.08.28 |
[@Autowired vs @RequiredArgsConstructor] feat. 의존성 주입 (0) | 2023.08.22 |