분류 전체보기(180)
-
301. XML 매핑 파일 (Mapper XML Files )
마이바티스의 진짜 힘은 매핑된 구문이야. 여기가 마술이 일어나는 곳이지. 그 모든 힘에 비해 XML 매핑 파일은 상대적으로 단순해. 동등한 JDBC코드와 비교해보았다면, 95% 정도의 코드를 절약하는 것을 볼 수 있어. 마이바티스는 SQL에 초점을 두고 개발되어졌으므로, 최선은 네가 하고자 하는 것을 피하는 것이다 (? its best to stary out of your way)XML 매핑 파일은 몇 개의 first class 요소들을 갖는다 ( 그것들이 정의된대로 )cache – 주어진 네임스페이스에 대한 설정cache-ref – 타 네임스페이스로부터의 캐시설정 참조resultMap – 데이터베이스 결과집합으로부터 객체를 어떻게 로드하는지를 묘사하는 가장 복잡하고 강력한 요소parameterMap –..
2012.04.24 -
210. 매퍼 (mappers)
지금까지 거론된 설정 요소에 의해 마이바티스의 행동이 설정되었고, 매핑된 SQL 구문을 정의할 준비가 되었어. 하지만 먼저, 어디에 그것들을 정의할지 마이바티스에 알려줄 필요가 있지. 자바는 이것과 관련된 어떠한 좋은 도구도 제공하지 않으므로, 가장 좋은 방법은 매핑파일을 어디서 찾을 수 있는지 마이바티스에게 간단하게 말하는 거야. 상대경로의 리소스 참조 클래스 패스를 사용할 수도 있고, 무자 그대로의 풀 url 참조(file:// 를 포함한 URL)를 사용할 수도 있어. 예를 들면 이러한 구문들이 어디로 찾아가야할 지 마이바티스에게 알려주는 방법들이야. 세부사항의 나머지 부분은 각각의 SQL 매핑파일의 내부에 있고, 다음 장에서 이에 대해 논의할 것이야
2012.04.23 -
209. 데이터베이스 아이디 프로바이더 (databaseIdProvider)
마이바티스는 데이터베이스 벤더에 따른 다양한 구문을 실행할 수 있어. 다중 벤더 지원은 매핑된 구문의 databaseID 속성에 기초하지. databasID가 없으면 마이바티스는 모든 구문을 로드하겠지만, databaseID가 있으면 그에 맞는 하나만 로드해. databaseID가 있고 없는 동일 구문이 발견된 경우에 databaseID가 없는 구문은 무시돼. 다중 벤더 지원을 가능하게 하려면 databaseIdProvider 를 mybatis-config.xml 파일에 다음과 같이 기술해VENDER 구현체 databaseIdProvider는 DatabaseMetaData#getDatabaseProductName()에 의해 리턴된 문자열로 databaseId를 세팅해. 그 문자열이 너무 길거나같은 제품의..
2012.04.23 -
208. 환경 (Environments)
마이바티스는 다중환경으로 설정될 수 있어. 이는 다양한 이유로 다수의 데이터베이스에 SQL 매핑을 적용할 수 있게 해주지. 예를 들면, 개발환경, 테스트 환경, 실제 환경을 각기 다르게 설정할 수 있고, 동일 스키마를 공유하는 다수의 데이터베이스를 지원한다거나, 동일한 SQL 매핑을 사용하고 싶을 수도 있어. 암튼 수많은 경우가 있어.그렇지만, 기억해야할 한 가지 중요한 것 : 다중 환경을 설정할 수 있지만, SQLSessionFactory 인스턴스 당 오직 하나만 선택할 수 있어.따라서 두 개의 데이터베이스에 연결하고 싶다면, SqlSessionFactory를 각각 하나씩 두개를 생성할 필요가 있어. 3개의 데이터베이스라면, 3개의 인스턴스가 필요하고, 더 연결하고 싶다면 더 필요하겠지. 참 기억하기 ..
2012.04.20 -
207. 플러그인 (plugins)
마이바티스는 매핑된 구문이 실행되고 있는 특정 시점에 호출을 가로채는 것을 허용해. 기본적으로, 마이바티스는 다음과 같은 메소드 호출을 가로채기 위한 플러그인을 허용하지.Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)ParameterHandler (getParameterObject, setParameters)ResultSetHandler (handleResultSets, handleOutputParameters)StatementHandler (prepare, parameterize, batch, update, query)이들 클래스 메소드들의 세부사항은 각각의 전체 메소드 특징들을 살펴봄..
2012.04.19 -
206. 오브젝트팩토리 (objectFactory)
마이바티스가 result 객체의 인스턴스를 새로 생성할 때마다, 인스턴스 객체를 생성하기 위해 오브젝트팩토리를 사용해. 기본 오브젝트팩토리는 기본생성자나, 파라미터가 있는 - 파라미터 매핑이 존재한다면- 생성자를 가진 타겟 클래스를 인스터스화하는 것보다 조금 더 많은 것을 하지. 오브젝트팩토리의 기본 행동을 오버라이드하고 싶다면, 새로 만들 수 있어. 예를 들면,// ExampleObjectFactory.java public class ExampleObjectFactory extends DefaultObjectFactory { public Object create(Class type) { return super.create(type); } public Object create(Class type, Lis..
2012.04.19