203. 세팅 (Settings)

2012. 4. 19. 09:09공부/MYBATIS

이것들은 마이바티스가 작동되는 방식을 수정하는 매우 중요한 내용이야. 다음 테이블은 각각의 세팅과 그 의미 그리고 기본값들을 설명한거야.

세팅

설명

가능값

기본값
cacheEnabled

이 설정으로 모든 매퍼의 모든 캐시를 전역으로 사용할지 말지를 결정

true | falsetrue
lazyLoadingEnabled

늦은 로딩을 전역으로 가능하게 할지 말지를 설정. disable이면 연관된 모든 것들은 빠른 로딩이 됨

true | falsetrue
aggressiveLazyLoading

enable일 경우, 늦은 로딩 프라퍼티 객체는 모든 늦은 로딩 프라퍼티의 호출에 의해  로드될 것이다. 반면, 각 프라퍼티는 필요에 의해 로딩.

true | falsetrue
multipleResultSetsEnabled

하나의 구문으로부터 여러개의 resultset이 리턴될지를 허락할지 말지를 결정(적절한 드라이버가 필요함).

true | falsetrue
useColumnLabel

컬럼네임 대신에 컬럼라벨을 사용. 이부분에서는 드라이버마다 다르게 작동함. 드라이버 문서서나 테스트를 통해 사용하는 드라이버에서 두가지 모드가 어떻게 작동하는지 확인해야함

true | falsetrue
useGeneratedKeys

JDBC가 생성키를 지원하도록 허용. 이 기능을 지원하는 드라이버가 필요. true로 설정하면 생성키가 사용되도록 강제함. 일부드라이버에서는 이 기능의 지원을 무시하지만 여전히 작동함(예를들면 Derby)

true | falseFalse
autoMappingBehavior

마이바티스가 자동으로 컬럼을 필드/프라퍼티에 매핑할 것인지, 그리고 어떻게 매핑할 것인지 기술. NONE는 자동매핑을 불가능하게 함. PARTIAL은 안에 정의된 중첩되지 않은 result에 대한 매핑만 함. FULL은 모든 자동매핑을 함 (중첩이나 다른 어떤것을 포함해서)

NONE, PARTIAL, FULLPARTIAL
defaultExecutorType

기본 executor를 설정. SIMPLE executor은 특별한게 없음. REUSE executor는 prepared statement를 재사용. BATCH executor는 statement를 재사용하고, updates를 배치처리

SIMPLE REUSE BATCHSIMPLE
defaultStatementTimeout데이터베이스로부터 결과를 얼마나 기다릴지 세팅Any positive integerNot Set (null)
safeRowBoundsEnabled

중첩된 statement에 RowBounds를 사용할지 결정

true | falseFalse
mapUnderscoreToCamelCase

전통적인 데이터베이스 컬럼네임인 A_COLUMN 을 전통적인 자바 프라퍼티명인 aColumn 형태로 자동 매핑을 가능하게 할지 설정

true | falseFalse
localCacheScope

마이바티스가 로컬 캐시를 순환참조를 막고, 반복되는 중첩쿼리의 속도를 향상시키기 위해 사용. 기본값(SESSION)에 의해  세션동안 실행된 모든 쿼리는 캐시됨. 만약 localCacheScope=STATEMENT일 경우, 지역세션은 구문 실행에만 사용되고, 어떤 데이터도 같은 SqlSession의 다른 호출에 의해 공유되지 않음

SESSION | STATEMENTSESSION
jdbcTypeForNull

파라미터로 JDBC타입이 기술되지 않았을 때 JDBC타입을 null로 할지 기술. 일부 드라이버는 컬럼 JDBC 타입을 기술해야 하지만, 일부 드라이버는 NULL, VARCHAR 혹은 OTHER같은 일반적인 값으로도 동작

JdbcType enumeration. Most common are: NULL, VARCHAR and OTHEROTHER
lazyLoadTriggerMethods

어떤 오브젝트 메소드 트리거가를 늦은 로딩으로 처리할지 기술 

A method name list separated by commasequals,clone,hashCode,toString
세팅요소를 모두 설정한 예제가 아래야.

<settings>
  <setting name="cacheEnabled" value="true"/>
  <setting name="lazyLoadingEnabled" value="true"/>
  <setting name="multipleResultSetsEnabled" value="true"/>
  <setting name="useColumnLabel" value="true"/>
  <setting name="useGeneratedKeys" value="false"/>
  <setting name="enhancementEnabled" value="false"/>
  <setting name="defaultExecutorType" value="SIMPLE"/>
  <setting name="defaultStatementTimeout" value="25000"/>
  <setting name="safeRowBoundsEnabled" value="false"/>
  <setting name="mapUnderscoreToCamelCase" value="false"/>
  <setting name="localCacheScope" value="SESSION"/>
  <setting name="jdbcTypeForNull" value="OTHER"/>
  <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>