2013년 8월 11일 일요일

[Struts, Spring, Spring3.2, iBATIS, Spring MVC, Spring JDBC, Spring Framework,Spring교육, Spring강좌, Spring IoC, Spring DI, Spring DL, 구로디지털 Spring교육, spring MyBatis, Hibernate]spring에서 오라클 시퀀스(sequence) 사용하기

1. xml 설정 파일에서 다음과 같이 incrementManager를 정의한다.

오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)  

 
   (오라클 이므로 org.springframework.jdbc.support.incrementer.OracleSequenceMaxValueIncrementer를 사용했으나
    다른 DB라면 적절한 클래스를 사용해야 한다. DB2라면 SequenceMaxValueIncrementer, MySQL이라면 MySQLMaxValueIncrementer, PostgreSQL이라면 PostgreSQLSequenceMaxValueIncrementer)
 
 
<!-- 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:@192.168.1.131: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.SpringJdbcDAO">
  <property name="dataSource">
   <ref local="dataSource" />
  </property>
  <property name="incrementer">
            <ref local="incrementerManager" />
        </property>  
 </bean>

 <bean id="boardService" class="board.service.BoardServiceImpl">
  <property name="boardDAO">
   <ref local="boardDAO"/>
  </property>
 </bean>

 <bean id="incrementerManager" class="org.springframework.jdbc.support.incrementer.OracleSequenceMaxValueIncrementer"> 
     <property name="dataSource">
            <ref bean="dataSource"/>
        </property>
        <property name="incrementerName">  
            <value>SEQ_SID</value>
        </property>
    </bean>
 
2. insert하는 DAO쪽에서 ...
 
private DataFieldMaxValueIncrementer incrementer;
 public void setIncrementer(DataFieldMaxValueIncrementer incrementer) {
     this.incrementer = incrementer;
 }
 
라고 increment를 정의하고...
 
값을 insert하기 전에
 
String strQuery = "INSERT INTO BOARD VALUES " +
        "( ?, ?, ?, ?, ?, sysdate) ";

int maxID =new Integer(incrementer.nextIntValue());
 

댓글 없음:

댓글 쓰기