DAO 를 보시죠~
일단 DB연결은 spring내에서 지원하는 Jdbc Template을 사용하였습니다.
연결 설정은 springJDBC.xml을 참조합니다~
url user, password 등 값을 설정하여 dataSource를 만들고요~ 이것을
boardDAO클래스의 속성으로 넣어주고 있습니다~
매하단에는 앞에서 설명한 boardservice에서 bean도 설정하고 있습니다~
======WebContent\WEB-INF\springContext\springJDBC.xml======
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- DBCP 설정 -->
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@localhost:1521:orcl</value>
</property>
<property name="username">
<value>scott</value>
</property>
<property name="password">
<value>tiger</value>
</property>
</bean>
<bean id="boardDAO" class="board.dao.BoardDAO">
<property name="dataSource">
<ref local="dataSource"/>
</property>
</bean>
<bean id="boardService" class="board.service.BoardServiceImpl">
<property name="boardDAO">
<ref local="boardDAO"/>
</property>
</bean>
</beans>
====================================================================
다음으로...DAO내 구현은.. dataSource를 인자로 jdbcTemplate 생성
합니다.
sql작성시 외부 인자를 ?로 주고 이에 대응하는 값을 Object배열에 저장합니다..
String sql = select * from test where a = ?
Object[] params = new Object[]{key1,key2};
쿼리는 다음메서드를 통해서 날리게 됩니다.
- insert delete update경우 update()
- select이며 하나의 Object로 반환코자할때 queryForObject()
- select이며 다수의 Object를 List로 반환코자 할때 query()
int jdbcTemplate.update(String sql, Object[] object)
Object jdbcTemplate.queryForObject(String sql, Object[] object, Object object)
list jdbcTemplate.query(String sql, Object[] object, List list)
** Object는 RowMapper를 통해 게시판 정보를 저장하고 있는 DTO객체로
생성하면 한답니다~***
List부분의 소스만 간단히 보면 ~
public class BoardDAO {
private JdbcTemplate jdbcTemplate;
private DataSource dataSource;
Logger logger = Logger.getLogger(this.getClass());
public void setDataSource(DataSource dataSource){
this.jdbcTemplate = new JdbcTemplate(dataSource);
} public Collection getList(int start, int end){
if(logger.isDebugEnabled()){
logger.debug("DAO 'select list' mehtod...");
}
String sql = "select * from(select num, title, name, regdate, bdepth, hitcount, rownum r from myboard order by bgroup desc ) where r > ? and r < ?";
List boardList = new ArrayList();
Object[] params = new Object[]{
new Integer(start),
new Integer(end)
};
boardList = this.jdbcTemplate.query(sql, params, new RowMapper(){
public Object mapRow(ResultSet rs, int rowNum) throws SQLException{
BoardDTO board = new BoardDTO();
board.setNum(rs.getInt(1));
board.setTitle(rs.getString(2));
board.setName(rs.getString(3));
board.setRegdate(rs.getString(4));
board.setBdepth(rs.getInt(5));
board.setHitcount(rs.getInt(6));
return board;
}
});
return boardList;
}
.....................................
}
이렇게 해서 간단하게 spring을 통한 게시판의 기본흐름을 적어봤구요
list의 컨트롤의 경우 기본적인 controll를 상속받아서 하나의 컨트롤로 하나의 서비스를 처리하는 로직을 구현했는데요~
게시물의 쓰기, 수정, 리플쓰기등은 SimpleFormController를 상속받아서 한 컨트롤로 처리했습니다. 계속~~~
댓글 없음:
댓글 쓰기