본문 바로가기

IT50

[iBATIS 2.x] 일괄처리, 트랜잭션 성능 iBATIS 2.x 는 대량의 insert, update, delete 작업을 효율적으로 처리 할 수 있는 방법으로 startBatch(), executeBatch() 메서드를 제공한다. 개발자 가이드에 의하면 네트워크 트래픽 최소화, JDBC 드라이버의 추가적인 최적화(압축같은) 같은 혜택을 통해 성능향상을 볼 수 있다고 한다. startBatch(), executeBatch() 메서드는 문서상으로 명시적 transaction 과 함께 사용해야 한다고 나오지는 않았으나 테스트시에는 명시적 transaction 을 사용하지 않았을때는 일반작업과 동일하거나 나쁜 결과를 보였다. 1. 특징 UPDATE 문 1000번 반복 처리 속도 테스트 결과 1) 배치+트랜잭션 : 77ms 2) 트랜잭션 : 1104ms .. 2010. 11. 11.
Java Tip #2 : 큐(Queue) 성능 테스트 결과 ArrayList - 넣기 : 38ms ArrayList - 빼기 : 36851ms HashMap - 넣기 : 170ms HashMap - 빼기 : 17ms ConcurrentLinkedQueue - 넣기 : 156ms ConcurrentLinkedQueue - 빼기 : 17ms LinkedList - 넣기 : 41ms LinkedList - 빼기 : 9ms ArrayBlockingQueue - 넣기 : 32ms ArrayBlockingQueue - 빼기 : 22ms ArrayDeque - 넣기 : 17ms ArrayDeque - 빼기 : 5ms LinkedBlockingQueue - 넣기 : 47ms LinkedBlockingQueue - 빼기 : 32ms LinkedBlockingDeque - .. 2010. 11. 9.
이클립스 팁 : 템플릿을 이용해 Logger 선언을 간단히 하자 최근 프로젝트에 Log4J 를 Logback 으로 교체하고, 코드 전반적으로 로그를 적용하게 되면서 코드를 대량으로 수정 할 일이 생겼는다. 보통은 Refactoring이나 File Search 의 replace 기능을 이용하는데 이 작업을 하기엔 불편한 점이 많아서 다이나믹 임포트를 이용해 logger 선언을 편리하게 해주는 이클립스 템플릿을 만들어봤다. 이 템플릿을 이용하면 logger까지 치고 CTRL+SPACE 키를 누를때 로거 선언과 클래스 임포트가 한번에 된다. Window > Show View > Templetes 으로 Templetes view 를 연 후 다음과 같이 템플릿을 하나 추가하자 타이핑 하기 귀찮은 분은 다음 텍스트를 copy & paste! private static final.. 2010. 8. 20.
Spring - iBATIS : 웹서버 시작시 jdbc.properties 를 읽지 못해도 무시하게 하자 웹서버를 포함한 솔루션 배포시에는 데이터베이스 연결 설정 파일을 포함시키기 어렵다. 사용자의 DB접속 환경이 어떨지 알 수 없기 때문이다. 그렇다고 서버 셋업시에 사람이 일일이 설정파일을 만지는게 하는것도 불안하다. 보통은 어플리케이션 설치시에 정보를 입력받아 속성파일로 써주거나, 웹사이트가 구동되고 나서 DB설정을 먼저 하도록 한다. 그런데 문제는 Spring 이 dataSource 객체를 생성하는 방식이다. applicationContext.xml 1: 3: 4: 5: 6: 7: 8: 9: 10: 11: Spring 은 이처럼 applicationContext.xml 파일로 properties 파일의 위치를 정의하고 dataSource bean에서 이를 참조하도록 해서 웹서버 시작시에 로딩한다. 그런.. 2010. 7. 14.