2013년 9월 2일 월요일

스프링에서 오라클 시퀀스(sequence) 사용하기)

spring에서 오라클 시퀀스(sequence) 사용하기)

 1. xml 설정 파일에서 다음과 같이 incrementManager를 정의한다.
 
   (오라클 이므로 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());
 
와 같이 사용하면 된다.


오라클자바커뮤니티 추천 실무 전문 강좌



댓글 없음:

댓글 쓰기