기존에 ORM을 사용하면서 중요하게 생각했던 게 DAO와 DTO였는데
새로 RDB에서 거래를 구성하는 정보를 조회해오는 서버를 만들며
Mapper 기준에서는 어떤 식으로 사용을 해야할까 공부함
SQL에서 DAO를 구성하는 방법은 크게 3가지로 나뉨
1. DAO Reposiotory 방식
2. Mapper Interface 방식
3. SQL Annotation 방식
세 가지 방식 중에서 Mapper Interface 방식을 사용 중이기에
Mapper Interface 방식을 정리
aaa.bbb.ccc.EmployerMapper
을 mapper.xml 상의 namespace와 연동, 인터페이스 메소드가 query id로 호출mapper.xml
<Mapper namespace="aaa.bbb.ccc.EmployerMapper">
<Mapper>
EmployerMapper.java
@Mapper("employerMapper")
public interface EmployerMapper {
public List<EmpVO> selectEmployerList(EmpVO vo);
public EmpVO selectEmployer(BigDecimal empNo);
public void insertEmployer(EmpVO vo);
public int updateEmployer(EmpVO vo);
public int deleteEmployer(BigDecimal empNo);
}
이렇게 DAO인 Mapper Interface와 mapper.xml이 연동되었다면
서비스 클래스에서 사용하기 위한 객체 의존성 주입이 필요
@Service
public class EmployerService() {
@Autowired
Private EmployerMapper empMapper;
}
결론적으로 JPA에서 테이블을 정의하고 해당 테이블과 관련이 있는 또 다른 엔티티와의 관계를 정의하는 것이 엔티티이고, SQL Mapper의 경우 직접 작성한 SQL 쿼리를 기반으로 객체를 정의하기 때문에 별도로 테이블 관계를 설정해줄 필요가 없다