블로그 이미지
올해목표 // 10월 어학연수 떠나자~ 자수씨

카테고리

전체글 (1457)
Brand New! (28)
주절주절 (213)
MOT (11)
해외쇼핑 (49)
쇼핑노트 (150)
취미생활 (94)
iPhone (4)
Eclipse (121)
Google (83)
Spring (31)
JAVA (176)
JavaScript (59)
WEB (49)
Database (20)
OS (26)
Tools (8)
Tips (26)
IT정보 (1)
Book (21)
Programming (37)
외부행사 (43)
주변인들 (17)
여행노트 (60)
학교생활 (30)
회사생활 (52)
사회생활 (5)
외국어공부 (12)
잡동사니 (30)
Total
Today
Yesterday
 
12-22 00:00
 

달력

« » 2024.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
 

최근에 올라온 글

최근에 달린 댓글


JEUS 6 + Oracle 11g 조합으로 다른 서버에서 잘 돌아가던 쿼리를 돌리니 운영 환경에서는 아래와 같은 오류가 뜹니다.

uncategorized SQLException for SQL []; SQL state [null]; error code [17004];
Invaild column type


문제의 원인은 null 이 들어가서 타입이 맞지 않게 되는 것 같은데... 해결방법은 다음과 같습니다.

insert into Person (name, age, address)
values (#name#, #age#, #address#)

원래의 쿼리가 위와 같을 경우 address 가 null 로 들어갈 때 발생하게 된다면...

insert into Person (name, age, address)
values (#name#, #age#, #address:VARCHAR:NO_ENTRY#)

타입 지정과 null 이 들어오더라도 처리할 수 있도록 변경해 줍니다. 저래야 jdbc 에서 setNull 처리를 해주는 것 같습니다.

킁;;;  세상은 우리의 편이 아닌 듯...

Posted by 자수씨
, |

iBATIS 를 이용한지는 3년정도가 지났고, Hibernate 는 올해 처음 맛을 보았습니다.

두가지 모두 각각의 장점들이 명확한지라, 어느 한쪽만 택하기가 아쉬운 점이 있습니다.

그래서 다음번 프로젝트 때는 두가지를 병행하여 사용해볼까 합니다.

CRUD 는 하이버네이트를 이용하고, 테이블 간의 조인이 필요로 할 경우에는 iBATIS 를 이용해보려 합니다.

아마도 테이블 설계가 잘 되어 있고, DB 내에 펑션이나 프로시저 처럼 로직이 들어가 있지 않다면 iBATIS 를 이용할 일이 거의 없겠지만 현실은 항상 우리편이 아니기 때문에 iBATIS 도 적절하게 사용하는 것이 생산성 향상에 도움이 될 것으로 생각합니다.

어차피 DataSource 는 공유해서 사용할 것이고... 문제가 될만한게 없겠죠???

Posted by 자수씨
, |

스프링을 2.5.6 에서 3 으로 버전 업을 한 후, iBATIS 쪽에서 문제가 발생하였습니다.



Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/kr/co/vicki/data/SqlMapConfig.xml]


여러군데를 뒤지다 보니, configLocation 에 classpath: 를 앞에 붙여서 하면 된다고 하는 글을 보았습니다.




=ㅁ=... 됩니다... 도대체 뭔 차이가 있던건지...

Posted by 자수씨
, |



단점은 CLOB 컬럼이 NOT NULL 일 경우 insert/update 가 되지 않습니다. 쳇...

SqlMapConfig.xml 에 아래 typeHandler 를 추가해주면 jdbcType 이 CLOB 인 컬럼들이 해당 속성을 타게 됩니다.
(resultMap 이나 parameterMap 으로 설정하는 것으로 테스트 해보았습니다. 그냥 되는지는 아직 검증이 되지 않았습니다.)
 <typeHandler javaType="String" jdbcType="CLOB" callback="kr.co.vicki.utils.ibatis.handler.AltibaseClobStringTypeHandler" />



흠.. 이게 무신 고생인지...


Posted by 자수씨
, |

Altibase 에서 제공해준 Altibase JDBC 를 통해서 CLOB 에 insert/update 를 하면 다음과 같은 오류 메시지가 떨어집니다.

[0]:Unable to insert(or update) NULL into NOT NULL column.

CLOB 로 잡은 컬럼이 NOT NULL 속성으로 잡혀 있었고, Altibase 에서 제공해준 PreparedStatement.setCharacterStream 를 이용하여 insert/update 를 하는 것이였습니다.

지푸라기라도 잡는 심정으로 해당 컬럼을 NULL 허용으로 잡고 다시 insert/update 를 해보니 정상적으로 동작하였습니다.

그 상태에서 바로 select 를 하여 ResultSet.getString 으로 값을 가져오게 되면 null 값만 가지고 옵니다.

select 도 Altibase 에서 제공해준 방식인 Clob.getCharacterStream 을 이용하여 가지고 오면 인코딩은 깨지긴 하였으나 값은 가지고 오는 것을 확인하였습니다.

JDBC 가 잘못된걸까요... 후우...

일단 해결책으로 보는 것은 CLOB 를 모두 NULL 허용으로 바꾸고 저희가 사용하는 iBatis 의 TypeHandler 를 이용하면 될 것으로 보입니다. 하지만 공수가 많이 드는 작업으로 생각이 되어...


Altibase 에서 제공해준 insert/update 방법입니다.


Altibase 에서 제공해준 select 방법입니다.



Posted by 자수씨
, |

개강 기념으로 8월 초에 릴리즈된 iBATIS 3 베타 버전을 공부할 예정입니다.

과연 뭐가 바꼈을까용...

슬슬 살펴보아야 겠습니다.

Posted by 자수씨
, |

iBatis 에서 문제가 발생하면 실행되는 쿼리를 확인해보고 싶은 마음이 굴뚝 같을 것입니다.
아래와 같이 설정을 해주면 볼 수가 있습니다.




빔프로젝트 파시는 개굴옹에게 바칩니다.

Posted by 자수씨
, |

오라클에서 테이브를 만들고 iBatis 쿼리를 뚝딱뚝딱 만들고 테스트를 했는데..

안된다....  type = #type# 이런식으로 썼는데 안된다...

쿼리로 돌려보면 잘된다...

무슨 문제일까하고 봤더니....

type 컬럼을 CHAR 로 잡았던 것이다..... (된장) VARCHAR 로 잡아야 하는데..

털썩... 내 2시간은 에어컨 바람과 함께 사라지다~

Posted by 자수씨
, |
iBatis의 sqlMapClient를 Spring에서 쓰려면 applicationContext.xml에 요로케

추가만 해주면 됩니다.

ㅁ 일반 JDBC connections


ㅁ JNDI connections


이제는 Spring과 친해질 시기... 스크립트야 안녕???

Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백