DB Framework를 공개합니다.
안녕하세요.
나름대로 꽤 쓸만하다고 생각하는 DB Framework를 공개합니다 =ㅅ=;
http://bleujin.tistory.com/153
에 가면 조금 더 자세한 설명이 있겠지만 간단히 첨언하자면..
(해당 페이지 아래부분에 소스파일과 jar 파일을 다운로드 받을수 있습니다. )
해당 프레임워크의 특징은 세가지 입니다.
첫번째 프레임워크 사용자는
레이어 프레임웍의 특성상 JDBC의 API에 접근할 필요도 혹은 접근해야 할 이유도 없어야 된다.
두번째 사용에 있어서 기본의 레거시 방법보다 간편해야 하며 사용자의 실수 가능성에 관대해야 한다.
세번째 다양한 상황에 적응할수 있어야 하며 동시에 불필요한 오버헤드를 일으켜서는 안된다.
초간단 사용방법을 적자면
첨부파일을 다운로드 받아서 사용하고자 하는 JDBC Driver 파일과 함께 Path 설정해주고
// DB 연결정보를 셋팅한다.
DBManager dbm = new MySQLPoolDBManager("jdbc:mysql://novision/test", "bleu", "redf") ;
// DB 관리자를 설정하고 초기화한다.(초기화는 Application의 수명에서 단 한번 실행)
DBController dc = new DBController(dbm) ;
dc.initSelf() ;
IUserCommand cmd = dc.createUserCommand("select * from copy_tblc where a > :a") ;
cmd.addParam("a", 1) ;
cmd.setPage(Page.create(10, 2)) ; // 10개씩 했을때 2page 내용
Rows rows = cmd.execQuery() ;
Rows page3 = rows.getNextPage() ; // 3 page 내용 가져오기..
// Application 종료시 단 한번 실행..
dc.destroySelf() ;
끝입니다. 정말 간단하죠? -ㅅ-
풀링을 관리하거나 커넥션을 닫는다거나 PreparedStatement와 ResultSet을 어떻게 해야 한다든가..
그런거 다 알아서 합니다. =ㅅ=;
프로그램 시작시 initSelf() 종료시 destorySelf()만 해주면 됩니다.
Rows는 jdbc.sql.ResultSet Interface를 impl 했기때문에
기존의 메소드 거의 대부분 동일하게 쓰면 됩니다.
그리고 순수한 Value Object 이기 때문에
close()를 해주지 않아도 되고(인터페이스에 정의되어 있기 때문에 close()가 있긴 하지만 전혀 상관없습니다.)
파라미터로 값처럼 전달해도 됩니다.
Dao로 바꾸고 싶다면..
List<ValueObject> list = (List<ValueObject>)rows.toHandle(new BeanListHandler(ValueObject.class)) ;
와 같이 해주면 Dao로 변경가능합니다.
물론 그 밖에도 많은 기능이 있습니다.
Prcedure, Lob Handle, Distributed Transaction, Batch 처리, Plan 보기
Paging, Selectable Cache, User Defined Handling 등등 말이죠. =ㅅ=
기본적으로 Oracle, MSSQL, MySQL은 모든기능을 사용할수 있고 테스트셋으로 점검하며
그 밖에 H2, HSQL 등등의 기타 DB도 사용할수 있습니다.
가장 큰 특징은 ...
앞서 말했든 프레임워크 사용자의 실수 가능성을 최대한 줄일수 있도록 단순하며
동시에 DB에 디펜던트한(Lob, Procedure, Batch, Paging, cursor 등등) 부분에서
자유로울수 있게 DB별로 가장 효율적인 방법을 사용하면서
동시에 같은 인터페이스를 사용할수 있게 함으로서 개념 쉬프트 혼란을 겪지 않게 하는거죠
... 혹시 사용시 궁금한점이 있거나 미진한 부분이 있으시면
메일이나 블로그에 남겨두시면 참고하겠습니다.