본문 바로가기
Java

Spring - DAO, DAOImpl, mapper

by YoYoHa 2021. 1. 12.
728x90
반응형

Data Access Object

DB 데이터에 접근하는 객체

 

DAO(Data Access Object) DB를 사용해 데이터를 조화하거나 조작하는 기능을

전담하도록 만든 오브젝트를 말한다.

 

 사용자는 자신이 필요한 Interface DAO에게 던지고 DAO는 이 인터페이스를

구현한 객체를 사용자에게 편리하게 사용 할 수 있도록 반환해줍니다.

 

 DB에 대한 접근을 DAO가 담당하도록 하여 데이터베이스 엑세스를 DAO에서만

하게 되면 다수의 원격호출을 통한 오버헤드를 VO DTO를 통해 줄일 수 있고

다수의 DB 호출문제를 해결할 수 있습니다. 또한 단순히 읽기만 하는 연산이므로

트랜잭션 간의 오버헤드를 감소할 수 있습니다.

 

 

Mapper Interface

 - mapper 파일에 기재된 SQL 호출하기 위한 인터페이스

 - 매핑파일에 있는 SQL 인터페이스로 호출한다.

 

인터페이스

/* TestDAO */ (인터페이스)
public interface TestDAO {
	 // 조회
	 public TestVO read(int num) throws Exception;
}

 

 

 

인터페이스를 상속받은 클래스

/* TestDAOImpl (TestDAO 인터페이스를 상속받은 Impl) */
@Repository
public class TestDAOImpl implements TestDAO {

	// 마이바티스 
	@Inject
	private SqlSession sql;
	
	// 매퍼
	// mapper에 명시해둔 namespace와 동일한 문자열
	private String namespace = "com.yoyo.mappers.testMapper";
	
	
	@Override
	public TestVO read(int num) throws Exception {
		return sql.selectOne(namespace + ".read", num);
	}

}

 

 

mapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yoyo.mappers.testMapper">

	<!-- 조회 -->
	<select id="read" resultType="com.yoyo.domain.TestVO">
		select num, test from test where num = #{num}
	</select>

</mapper>

 

728x90
반응형

'Java' 카테고리의 다른 글

Spring - VO  (0) 2021.01.12

댓글