본문 바로가기

iBATIS

ibatis와 dbcp (Select문에 대한 rollback 실행) http://www.imaso.co.kr/?doc=bbs/gnuboard.php&bo_table=article&wr_id=40288 처음에는 어느 블로그에서 글을 보고그걸 바탕으로 조사를 했었는데, 위 기고문의 내용을 보니...처음 참고하였던 그 블로그와는 내용이 조금 다른(?.. 결과적으로는 같지만.. 과정 설명이 좀 다른.. )..좀 미묘하게 차이가 나는 부분이 있어서 위 글을 보고 소스를 열어서 참고해보았다. 일단.... ibatis의 아래 설정에 의해서...... ibatis에서 JDBCTransaction이 사용되고.. 거기서 아래와 같이 connection.setAutoCommit(false)가 실행됨..if(conn.getAutoCommit()) { conn.setAutoCommit(fals.. 더보기
Jrebel Ibatis Plugin. 내가 만들어서 올려두었던 Jrebel Ibatis Plugin이.. jrebel을 만든 회사의 사이트에서 거론되고 있었다. 내 블로그와 내가 올린 구글코드의 소스가.. ㅋ 기분이 묘하다. ㅎㅎ http://www.zeroturnaround.com/forum/topic.php?id=448 문제는 저 코드가.. 우리 사이트에 맞게 만들어진 것이라.. 다른 사이트에서는 동작을 안 한다는거 -_-;; 더보기
Jrebel Ibatis Plugin을 만들어 봅시다.. -2- 일단 Jrebel 플러그인의 메인이 되는 클래스는 org.zeroturnaround.javarebel.Plugin 인터페이스를 구현해야 합니다. 여기서 중요한 메서드가 preinit() 메서드 입니다. 앞서 얘기했듯이 Jrebel이 다양한 프레임워크에서 플러그인을 통해 클래스 실시간 로딩을 지원하는 방법은 컴파일 된 바이트코드를 핸들링하는 것 입니다. 이렇게 핸들링 할 클래스를 합쳐주는 메서드가 바로 preinit() 메서드입니다. 그리고 , void org.zeroturnaround.javarebel.Integration.addIntegrationProcessor(ClassLoader arg0, String arg1, ClassBytecodeProcessor arg2) 를 통해 등록되는 형식을 보면 a.. 더보기
Jrebel Ibatis Plugin을 만들어 봅시다.. -1- 회사에서 jrebel을 사용하면서 ibatis 에서 사용하는 sqlMap.xml과 Domain 클래스들의 변경에 대한 이슈가 있어서 플러그인을 만들었습니다. 회사에서는 프레임웍이 있어서 순수 ibatis를 위한 플러그인은 아니라서 소스를 그대로는 못 보여드리고.. 순수 ibatis (2.3.x)에서 사용 가능한 ibatis 플러그인을 한번.. 의사 코드를 사용해서 만들어 보려고 합니다. 우선 jrebel의 플러그인은 이미 컴파일된 클래스의 바이트 코드에 원하는 코드를 끼워넣어서 thread를 가로채는 방식으로 원하는 메서드를 먼저 실행하거나 나중에 실행하도록 하는 것이 기본적인 구현 방식입니다. 기본적으로 ibatis를 사용 할 때는 이런식이 됩니다. 일반적으로 매번 저렇게 SqlMapClient를 bu.. 더보기
Jrebel Ibatis plugin. 보니까.. Jrebel 에서 플러그인 제공하는 방식이 프레임워크에 소스를 끼워넣어서 인터셉트 혹은 특정 메서드 실행 후에 동작 할 수 있도록 해주는 방식이 있어서... 아주 심플하게 생각해서... sqlmapclient를 사용하기 위해 SqlMapClientBuilder를 사용해서 SqlMapClient client = SqlMapClientBuilder.buildSqlMapClient(reader); 를 실행 할 때마다 reader를 체크하여 reload해주면 되지 않을까 생각... 그냥 쓸 때마다 xml을 읽어오도록 구성 되어 있으면 문제 없지만 보통은 최초 기동시에 xml 정보를 읽어 놓고 그것을 재사용 하는 방법을 사용하고 있을 것이므로... 재기동이 문제가 되는 경우가 있다. 일단 , 최종 수정.. 더보기