티스토리 뷰

Backend

DAO

out of coding 2014. 3. 28. 16:52

DAO

데이터 접근을 목적하는 객체를 뜻함. Data Access Object. 이며, 커넥션 같은 것을 하나만 두고 여러 사용자가 DAO의 인터페이스를 사용하여 필요한 자료에 접근하도록 하는 것이 DAO의 개념이다.


필요성.

모든 데이터베이스에 공통적으로 접속 할 수 있는 ODBC가 나왔지만 완벽하지가 않았다. 여전히 로우 레벨의 API를 포함하고 있었기 때문에 개발 장벽이 여전히 높았습니다. 이러한 이유 때문에 개발자들은 정작 데이터베이스에 들어 있는 데이터를 어떻게 이용할지에 초점을 맟추기 보다, 어떻게 데이터베이스에 접속해서 데이터베이스와 교류하는지에 더 초점을 기울이게 되었음. 즉 데이터를 확용하는 논리적 고민보다 기술적 고민에 더 많은 신경을 썼었습니다. 이런 이유로 인하여 DAO란 대안이 나왔습니다.


기대효과.

사용자는 자신이 필요한 Interface를 DAO에게 던지고 DAO는 이 인터페이스를 구현한 객체를 사용자에게 편리하게 사용할 수 있도록 반환해줍니다.


장점과 단점.

DB에 대한 접근을 DAO가 담당하도록 하여 데이터베이스 엑세스를 DAO에서만 하게 되면 다수의 원격호출을 통한 오버헤드를 VO나 DTO를 통해 줄일수 있고 다수의 DB 호출문제를 해결할 수 있습니다. 또한 단순히 읽기만 하는 연산이므로 트렌젝션간의 오버헤드를 감소할 수 있습니다.

그러나 Persistent Storage를 너무 밀접하게 결합해서 작성을 하게 되면 Persistent Storage를 다시 작성할 경우가 생기는데 이러한 경우 유지 보수의 문제가 생길수도 있습니다.


대체적으로 다음과 같은 형태로, 하나의 Connection을 가지고 사용할수 있다.


public class XDao
{
	Connection xConnection = null;

	public XDao(Connection connection)
	{
		xConnection = connection;
	}

	public Vector selectXDBLogic(String param1) throws Exception
	{
		Statement statement = null;
		ResultSet resultSet = null;
		try
		{
			statement = xConnection.createStatement();
			statement.executeQuery("SELECT ... ");
			return ...;
		}
		catch(Exception e)
		{
			throw e;
		}
		finally
		{
			DBUtil.closeStatement(statement);
			DBUtil.closeResultSet(resultSet);
		}
	}
}


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함