@634

Spring Framework

どんどんメモ書き。

Advertisement

Oracleシーケンスの取得

DAO(SequenceDao.java)
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.jdbc.support.incrementer.OracleSequenceMaxValueIncrementer;

public class SequenceDao extends JdbcDaoSupport{

    private String getNextId() throws DataAccessException {
        OracleSequenceMaxValueIncrementer seq = 
            new OracleSequenceMaxValueIncrementer(super.getDataSource(), "シーケンス名");
        return seq.nextStringValue();
    }
}
シーケンスをサポートするクラスが用意されているので、上記のように利用する。

コンテキストファイル(applicationContext.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>

    <!-- Data Source -->
    <bean id="sampleDataSource" 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:@sample:1521:sampledb</value></property>
        <property name="username"><value>sample</value></property>
        <property name="password"><value>sample</value></property>
    </bean>

    <!-- dao -->
    <bean id="sequenceDao" class="dao.SequenceOracleDao">
        <property name="dataSource"><ref bean="sampleDataSource"/></property>
    </bean>    

    <!-- logic -->
    <bean id="sampleLogic" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="target"><ref bean="sampleLogicTarget"/></property>
    </bean>
    <bean id="sampleLogicTarget" class="logic.SampleLogic">
        <property name="sequenceDao"><ref local="sequenceDao"/></property>
    </bean>
</beans>
シーケンス用のDAOの生成時に、データソースの定義を渡す。

利用クラス(SampleLogic.java)
import org.springframework.dao.DataAccessException;

public class SampleLogic{

    private SequenceDao sequenceDao = null;
    public SequenceDao getSequenceDao() {
        return sequenceDao;
    }
    public void setSequenceDaoSequenceDao sequenceDao) {
        this.sequenceDao = sequenceDao;
    }

    public void getNextId() {
        String nextId = null;
        try{
            nextId = sequenceDao.getNextId();
        }catch(DataAccessException e){
            e.printStackTrace();
        }
        return nextId;
    }
}

リンク

Advertisement

ショートカット

634
634ブログ
このカテゴリのトップページに戻る
Incubator(Pukiwiki)
634ラボ
   UIコレクションギャラリー
   ZO-3ジェネレーター

サイト検索


Y!ログール