본문 바로가기

나만의 작업/iBatis

[iBatis] iBatis에서 Log4j를 이용하여 쿼리를 로그로 남기려면? iBatis에서 Log4j를 이용하여 쿼리를 로그로 남기려면~~ log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG log4j.logger.java.sql.ResultSet=DEBUG 쿼리 출력 내용을 보면, 새줄 기호(\n)가 모두 사라져서 쿼리 문장을 보기 어려울 때는 http://www.sqlinform.com 에서 쿼리 문자열을 보기 좋게 정렬 할 수 있다. (한번 문장을 넣어보았는데~ 좋다~+_+) 또는 'sql formatter'로 검색하면 다양한 SQL 문자열 정리 도구 들을 볼 수 있다. iBatis in Action에서 발췌.
[iBatis] 자동 생성 Key 이전에 포스팅했던 2008/08/29 - [나만의 작업/iBatis] - [iBATIS] 4. How to 내용에 있는 "Auto Generation Key" 부분에서 추가할 것이 있어서 좀 더 자세한 내용. iBatis in Action 에서 발췌. 거의 모든 데이터베이스는 새롭게 삽입되는 레코드마다 자동으로 기본 키를 생성해 주는 기능을 가지고 있는데, 삽입을 완료한 후 생성된 기본키를 알 필요가 있다면....? 자동 생성되는 기본키를 사용하도록 iBatis에서 요소의 특별한 자식 요소인 요소를 사용하여 생성된 키를 모델 객체로 가져올 수 있다. 이 접근법을 따르는 두가지 패턴이 있다. 1. 레코드를 삽입하고 데이터베이스가 키를 생성한 후에 생성된 키를 가져오는 것. 주의! ) 사용하는 드라이버가 마..
[iBatis] 자바빈즈와 Map 타입의 결과 iBatis in Action책을 보다가 기억해 놓을 내용을 발췌해 놓는다. iBatis framework는 결과 매핑에 (Integer, Long 혹은 그 외의 원시 타입의 래퍼 클래스 이외에) Map 이나 자바빈즈 객체를 사용할 수 있다. 이 두가지 접근 방법의 장점과 단점 접근 방식 : 자바빈즈 장점 : 성능, 컴파일 시 강력한 타입 검사, 컴파일 시 이름 검사, IDE에서의 리팩토링 지원, 형변환이 줄어듬 단점 : 코드량의 증가(get/set) 접근 방식 : Map 장점 : 코드량의 감소 단점 : 느림, 컴파일 시 검사하지 않음, 약한 타입, 실행시 오류 발생이 잦음, 리팩토링 지원 없음.
[iBATIS] 8. Annotation 기반으로 JUnit4를 이용한 Spring TDD ~ 9. Reference 8. Annotation 기반으로 JUnit4를 이용한 Spring TDD @TransactionConfiguration(transactionManager = "transactionManager", defaultRollback=true) @RunWith : 테스트를 실행할 org.junit.runner.Runner 구현 클래스를 지정할 수 있다. 스프링은 스프링 컨텍스트 설정 및 DI, 트랜잭션 처리 등을 지원해주는 Runner 구현 클래스를 제공하고 있다. Junit 4 기반의 테스트에서 스프링 컨텍스트에 설정된 빈 객체를 사용하고 싶다면 SpringJunit4ClassRunner 클래스를 @RunWith 어노테이션 값으로 설정하면 된다. @ContextConfiguration : 스프링 컨텍스트를 생..
[iBATIS] 7. iBATIS + Spring + transaction 7. iBATIS + Spring + transaction 1. 코드 기반의 트랜잭션 처리 (Progrmmatic Transaction) 2. 선언적 트랜잭션 (Declarative Transaction) - 태그를 이용 - TransactionProxyFactoryBean 태그를 이용 - @Transactional 어노테이션을 이용 태그 이용 @ Transactional 어노테이션을 이용 @Transactional(readOnly = true) public class DefaultFooService implements FooService { public Foo getFoo(String fooName) { // do something } // these settings have precedence for..
[iBATIS] 6. iBATIS + Spring 6. iBATIS + Spring SqlMapClientFactoryBean (org.springframework.orm.ibatis.SqlMapClientFactoryBean) SqlMapClientTemplate (org.springframework.orm.ibatis.SqlMapClientTemplate) SqlMapClientDaoSupport (org.springframework.orm.ibatis.support.SqlMapClientDaoSupport) 스프링의 iBATIS 연동지원 iBATIS 에서 데이터베이스 연동을 처리할 때 사용되는 SqlMapClient 역시 JDBC 프로그램을 할 때와 마찬가지로 try-catch 블록을 사용해서 예외를 처리해 주어야 한다 . 또한 에러원인에 따라 알..
[iBATIS] 5. Transaction 5. Transaction iBatis 가 지원하는 네 가지 트랜잭션 범위 * 자동 트랜잭션 : 단순한 한 개의 SQL 구문은 명시적으로 구분된 트랜잭션을 필요로 하지 않는다 . * 로컬 트랜잭션 : 간단하고 범위가 좁은 트랜잭션으로 여러 SQL 구문을 포함하지만 단일 데이터베이스에서 수행된다 . * 글로벌 트랜잭션 : 복잡하고 범위가 넓은 트랜잭션으로 여러 SQL 구문을 여러 데이터베이스 혹은 잠재적으로 데이터베이스가 아닌 JMS 의 큐나 JCA 커넥션 같은 다른 트랜잭션이 가능한 리소스상에서 실행된다 . * 사용자 정의 트랜잭션 : 사용자 맘대로 ~ "자동 트랜잭션" 보충 설명. JDBC는 'autocommit(자동커밋)' 모드이고 iBatis는 자동 커밋을 직접 지원하지 않고, 대신 자동 트랜잭션을..
[iBATIS] 4. How to 4. How to 1. 객체를 파라미터로 전달 JavaBeans, Map or primitive wrapper 2. 매핑되는 SQL 문장을 수행 SQL Maps 프레임워크는 PreparedStatment 인스턴스 생성 객체로부터 제공되는 값들을 파라미터로 세팅 3. SQL 문장을 수행하고 ResultSet 으로부터 결과 객체를 생성 . Update 의 경우에는 영향을 받은 rows 수가 반환 쿼리의 경우 하나 혹은 여러 객체들이 반환 결과객체는 자바빈즈 , Map 원시타입래퍼 또는 XML 이 될 수 있다 . SQL Maps 설정파일 -SqlMapConfig.xml
[iBATIS] 1.Overview ~ 3. Introduce iBATIS iBATIS 1. Overview2. Why use iBATIS?3. Introduce iBATIS4. How to5. Transaction6. iBATIS + Spring7. iBATIS + Spring + transaction8. Annotation 기반으로 JUnit4를 이용한 Spring TDD9. Reference 1. Overview 개발자에게 JavaBeans objects를 PreparedStatement parameters와 ResultMaps로 쉽게 매핑을 할 수 있도록 한다. 이를 통하여 database에 접근하기 위한 자바코드의 양을 줄일수있다.현재 iBatis는 세가지 언어: 자바, C#, Ruby로 구현되어 있다. 2. Why use iBATIS?OR맵핑툴을 사용하지 않을때 하위..