Java

Spring - DAO, DAOImpl, mapper

YoYoHa 2021. 1. 12. 18:56
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
반응형