spring로 검색한 결과 :: 시소커뮤니티[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

회원가입 I 비밀번호 찾기


SSISO Community검색
SSISO Community메뉴
[카페목록보기]
[블로그등록하기]  
[블로그리스트]  
SSISO Community카페
블로그 카테고리
정치 경제
문화 칼럼
비디오게임 스포츠
핫이슈 TV
포토 온라인게임
PC게임 에뮬게임
라이프 사람들
유머 만화애니
방송 1
1 1
1 1
1 1
1 1
1

spring로 검색한 결과
등록일:2008-06-11 11:29:07
작성자:
제목:Spring JDBC - 3.쿼리관리


SQL쿼리는 MessageSource에서 관리할 것이다. 따라서 MessageSource에서 SQL쿼리를 관리하는 것이 원칙으로 한다.

 

[예제4-11]DBQuery.properties

board.sql.insert = INSERT INTO BOARD \
            (boardno, title, name, email, password, \
            createdate, content) \
          VALUES(?, ?, ?, ?, ?, ?, ?)
board.sql.update = UPDATE BOARD SET \
      title=?, name=?, email=?, content=? \
       WHERE boardno=?
board.sql.update.hitcount = UPDATE BOARD SET \
        hitcount = hitcount + 1 \
          WHERE boardno=?
board.sql.delete = DELETE FROM BOARD WHERE boardno=?
board.sql.select.byboardno = SELECT \
        title, name, email, password, \
        createdate, content, hitcount \
        FROM BOARD WHERE boardno=?
board.sql.select.list = SELECT \
       boardno, title, name, email, createdate, hitcount \
      FROM BOARD ORDER BY CREATEDATE DESC LIMIT ?, ?
board.sql.totalcount = SELECT count(*) FROM BOARD      
boardfile.sql.insert = INSERT INTO BOARDFILE VALUES(?, ?, ?, ?, ?, ?)
boardfile.sql.delete.byboardno = DELETE FROM BOARDFILE WHERE boardno=?
boardfile.sql.delete.byboardfileno = DELETE FROM BOARDFILE WHERE fileno=?
boardfile.sql.select.byboardfileno = SELECT \
          fileno, filesize, filename, \
          contenttype, tempfilename \
           FROM BOARDFILE WHERE fileno=?
boardfile.sql.select.byboardno = SELECT \
         fileno, filesize, filename \
         FROM BOARDFILE WHERE boardno=?

 

 

[예제4-12]applicationContext.xml

<beans>

... 중간 생략 ...

 

 <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
  <property name="basenames">
   <list>
    <value>DBQuery</value>
    <value>Messages</value>
   </list>
  </property>
 </bean>

 <bean id="messageSourceAccessor" class="org.springframework.context.support.MessageSourceAccessor">
  <constructor-arg>
   <ref local="messageSource" />
  </constructor-arg>
 </bean>

 

 <bean id="myJdbcDaoSupport" abstract="true"
  class="net.javajigi.common.dao.MyJdbcDaoSupport">
  <property name="dataSource">
   <ref local="dataSource"/>
  </property>
  <property name="messageSourceAccessor">
   <ref bean="messageSourceAccessor"/>
  </property>
 </bean> 

 

 <bean id="boardDAOTarget" parent="myJdbcDaoSupport" class="net.javajigi.board.dao.springJDBCWithTemplateBoardDAO">
  <property name="incrementer">
   <ref local="boardIncrementer" />
  </property>
 </bean>

 

 <bean id="boardFileDAOTarget" parent="myJdbcDaoSupport" class="net.javajigi.board.dao.springJDBCWithMSBoardFileDAO">
  <property name="incrementer">
   <ref local="boardFileIncrementer" />
  </property>
 </bean>

 

</beans>

 

 

[예제4-12]의 "myJdbcDaoSupport" 빈을 보면 지금까지 보지 못했던 abstract라는 속성을 사용하고 있는 것을 볼 수 있다. 이는 자바의 abstract 예약어와 비슷한 의미를 가지는 것으로 abstract속성이 true로 설정되어 있으면 빈을 직접 생성하여 사용할 수 없으면, 다른 빈들의 부모(parent)역할을 하는 빈으로 사용된다. 일반적으로 abstract예약어를 많이 사용하는 경우는 "myJdbcDaoSupport"빈과 같이 공통적인 설정 정보가 있는 경우에 유요하게 사용된다.

빈 설정 파일으 ㄹ작성할 때 이와 같이 공통적인 정보들을 반복적으로 정의하는 경우가 많다. 프로그램 개발에서도 중복 코드는 요구사항 변경 시에 모든 소스 코드를 수정해야 하는 것 처럼 설정 파일 또한 같다. 그러므로 빈 설정 파일을 작성할 때 중복적으로 발생하는 설정 정보들이 많다면[예제4-12]와 같이 abstract와 parent를 이용하여 구현하는 것이 바람직하다.