BLOG ARTICLE iBATIS | 5 ARTICLE FOUND
- 2010.01.26 iBatis JDBC 설정.
- 2009.07.31 iBatis Connection reset error
- 2009.05.13 iBatis DDL 사용
- 2009.04.14 iBatis SelectKey 1
- 2008.01.31 iBatis에서의 CLOB, BLOB 처리
해결: sqlmap-config.xml에 다음의 속성 추가
<dataSource type="DBCP"> <-- 데이터 소스는 SIMPLE, JNDI가 아닌 DBCP로 설정
<property name="Pool.ValidationQuery" value="select SYSDATE from DUAL"/>
일정 간격으로 DB에 쿼리를 날려 연결 끊겼으면 풀에 있는 커넥션을
복구하는 메카니즘 인듯함.
commons-dbcp,
commons-pool,
commons-collection 세개의 라이브러리가 필요
http://commons.apache.org 에서 다운로드
* com.ibatis.dao.client.template.SqlMapDaoTemplate.queryForObject("service.createSeqTable"); // Query실행 시.
* Object가 이미 존재할 경우 ORA-00955
* Dynamic Query를 이용해 좀더 활용 가능할 듯.
* 아래는 일자별 시퀀스 테이블 생성과, 시퀀스 조회 함수 생성 예
* Server App 초기화 시 사용해 볼 수 있을듯.
<statement id="createSeqTable">
CREATE TABLE NET_DAILYSEQ ( FDTSEQ CHAR(8), FSEQ NUMBER)
</statement>
<statement id="createSeqFunction">
CREATE OR REPLACE FUNCTION GET_DAILYSEQ RETURN NUMBER IS
PRAGMA AUTONOMOUS_TRANSACTION;
vFseq NUMBER;
BEGIN
vFseq := -1;
SELECT
NVL(MAX(FSEQ),0)+1 AS FSEQ into vFseq
FROM NET_DAILYSEQ
WHERE
FDTSEQ = TO_CHAR(SYSDATE,'YYYYMMDD');
MERGE INTO NET_DAILYSEQ A
USING
(
SELECT NVL(MAX(FDTSEQ),TO_CHAR(SYSDATE,'YYYYMMDD')) FDTSEQ, vFSEQ as FSEQ
FROM NET_DAILYSEQ
WHERE FDTSEQ = TO_CHAR(SYSDATE,'YYYYMMDD')
) B
ON (A.FDTSEQ = B.FDTSEQ)
WHEN MATCHED THEN
UPDATE SET A.FSEQ = B.FSEQ
WHEN NOT MATCHED THEN
INSERT VALUES (B.FDTSEQ, B.FSEQ);
COMMIT;
RETURN vFseq;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
RAISE;
END GET_DAILYSEQ;
</statement>
<insert id="insert" parameterClass="map">
//여기 resultClass에 지정된 데이터 타입으로 키 반환..
SELECT TO_CHAR(NVL(MAX(seq), 0)+1, '00000000') FROM TARGET
</selectKey>
INSERT INTO TARGET ( SEQ, FILED1, FILED2,............... )
VALUES ( #seq#, #field1#, #field2#, ...... )
</insert>
iBatis에서 Oracle CLOB, BLOB 넣고 빼기
class Data{
<result property="clobField" column="clobField" jdbcType="CLOB"/>
</resultMap>
http://wiki.dev.daewoobrenic.co.kr/mediawiki/index.php/Ibatisclobblob