앞장에 이어서 테스트 class를 작성해보았습니다. 일단 이클립스에서
Class 파일로 TestController를 먼저 만들고 아래와 같이 소스코드를
입력했습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | @Controller public class TestController { @Resource(name="testservice") private TestService testservice; @RequestMapping(value = "/") public void home() { String text = testservice.getTestSql(); System.out.println("result: "+ text); } } |
여기까지 입력하면 이클립스에서 에러가 출력, Create Interface 간편
하게 인터페이스를 생성해주고 해당 내용을 작성합니다.
1 2 3 4 5 | public interface TestService { String getTestSql(); } |
이제 비즈니스 로직을 입력해줄 Class를 생성해줄건데요, 이는
ServiceImpl이라고 명명하겠습니다. 그리고 Impl Class는 Interface
TestService를 implements하여 부모의 메소드를 재정의 해줍니다.
1 2 3 4 5 6 7 8 9 10 11 | @Service(value="testservice") public class TestServiceImpl implements TestService{ @Resource(name="testDAO") private TestDAO testDAO; public String getTestSql(){ return testDAO.getTestSql(); } } |
다음으로 DAO Class를 작성하여 data access method를 작성합니다.
DAO는 AbstractDAO를 상속 받아 1장에서 작성한 XML 파일에서
데이터베이스에 액세스하여 쿼리 결과를 출력합니다.
TestDAO ▼
1 2 3 4 5 6 7 8 | @Repository(value="testDAO") public class TestDAO extends AbstractDAO{ public String getTestSql() { return (String) selectOne("getTestSql"); } } |
AbstractDAO ▼
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | public class AbstractDAO { protected Log log = LogFactory.getLog(AbstractDAO.class); @Autowired public SqlSessionTemplate sqlSession; protected void printQueryId(String queryId) { if(log.isDebugEnabled()){ log.debug("\t QueryId \t: " + queryId); } } public Object insert(String queryId, Object params){ printQueryId(queryId); return sqlSession.insert(queryId, params); } public Object update(String queryId, Object params){ printQueryId(queryId); return sqlSession.update(queryId, params); } public Object delete(String queryId, Object params){ printQueryId(queryId); return sqlSession.delete(queryId, params); } public Object selectOne(String queryId){ printQueryId(queryId); return sqlSession.selectOne(queryId); } public Object selectOne(String queryId, Object params){ printQueryId(queryId); return sqlSession.selectOne(queryId, params); } @SuppressWarnings("rawtypes") public List selectList(String queryId){ printQueryId(queryId); return sqlSession.selectList(queryId); } @SuppressWarnings("rawtypes") public List selectList(String queryId, Object params){ printQueryId(queryId); return sqlSession.selectList(queryId,params); } } |
여기까지 진행하고 톰캣을 재기동하면 result: OK 라는 메시지가 이클립스
Console에 출력됩니다.