달력

3

« 2024/3 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2010. 4. 12. 14:59

Ibatis settings 요소 I.lib()/I.lib(iBatis)2010. 4. 12. 14:59

.. .. ..
<setting> 요소는 약간의 잡동사니 설정 옵션이다. <settings> 요소에 속성을 추가함으로써 값을 지정할 수 있다. 여러가지 설정들이 있으며 각각은 SQL Maps 인스턴스에 전체적으로 적용된다.

lazyLoadingEnabled
적재 지연 (Lazy Loading)은 정보를 필요할 때만 읽어들이고 다른 데이터는 명시적인 요청이 있을때까지 적재를 미루는 기술이다. 다른 말로 하면 절대적인 요청이 들어올 때까지 애플리케이션이 가능한 한 일을 적게 하는 것이다.

1000명의 고객 계좌가 각각 1000개의 주문을 가지고 있고 각 주문은 25개의 항목을 가졌다. 이 모든 데이터를 읽어 들이려면 25,000,000개의 객체를 생성하고 그것들을 메모리에서 유지해야 할 필요가 생긴다. 적재 지연을 사용하면 요구 사항을 거의 2500개로 줄일수 있으며 이는 원래 개수의 일만분의 1이다.
이 설정은 연관된 쿼리 구문이 있을때 적재 지연을 사용할지 여부를 지정하는 데 쓰인다. 사용 가능한 값은 'True' 혹은 'False'이며 디폴트 값은 'True'이다.

cacheModelsEnabled
캐싱은 성능을 향상시키는 기법으로 최근 사용된 데이터가 미래에 다시 사용될 것이라 가정하고 메모리에 계속 저장해 두는 것이다. 이 설정은 iBatis가 캐싱을 사용할지 여부를 지정하는데 사용한다.
디폴트 값은 'True'이며 캐싱의 이점을 누리려면 매핑 구문에 캐시 모델도 설정해야만 한다.

enhancementEnabled
이 설정은 CGLIB에 최적화된 클래스를 통해 적재 지연 성능을 향상시킬지 여부를 지정하는 데 사용한다. 마찬가지로 사용 가능한 값은 'True' 와 'False' 이고 디폴드 값은 'True' 이다.
[참고]
CGLIB는 실행 시간에 코드를 생성하는 라이브러리이다. 이는 iBatis의 자바빈즈 속성 설정과 같은 특정 기능을 최적화시켜준다. 또한 구상 클래스의 적재 지연도 지원하여 적재 지연이 필요한 형에 대해 인터페이스를 생성해야만 하는 현상을 피하게 해준다. CGLIB는 http://cglib.sourceforge.net에서 구할수 있다. 다른 형성 향상 기법들처럼 꼭 필요하다고 생각되지 않으면 사용하지 않는 것이 좋다.
위의 예제에서는 enhancement 를 활성화 하였다. 하지만 cglib가 클래스 패스상에 없으면 이 기능은 조용히 비활성화 될 것이다.


useStatementNamespace
이 설정은 매핑 구문이 적절한 이름을 가지고 있어야 iBatis가 실행될수 있도록 하는 옵션이다. 사용가능한 값은 'true' 혹은 'false'이며 디폴트 값은 'false'이다.
다시 말해 SQL Map을 정의할 때 적절한 맵 이름을 가진 매핑 구문을 선택하는 데 사용된다는 것이다. 예를 들어 'Account'라는 이름을 가진 SQL mAP 이 있고 이 맵은 'insert', 'update' ,'delete', 'getAll' 이라는 이림의 매핑 구문을 포함하고 있다고 가정하자. 계좌(Account) 하나를 추가하고자 한다면, 'Account.insert'라는 매핑 구문을 호출하면 되는 것이다. 이로써 서로 다른 맵에 원하는 대로 여러 'insert' 라는 매핑 구문을 작성해도 이름이 충돌하지 않게 된다.
비록 'insertAccount'와 같은 이름을 이용해서 동일한 결과를 얻을 수도 있지만 명명공간(name space)를 사용하면 대규모 시스템에서 작업하는 데 도움이 많이 된다. 이는 쿼리 구문들이 논리적으로 조직화되어 있지 않은 경우, 구문을 찾는데 도움을 주기 때문이다.

maxRequest (비권장)
요청이란 입력,수정,삭제 그리고 저장 프로시저 호출과 같은 모든 SQL 작업을 의미한다. 디폴트 값인 512 대신에 최대 32개의 요청만이 한 번에 수행될 수 있도록 최대 요청 개수를 축소하였다.

maxSessions (비권장)
세션이란 스레드 차원의 메커니즘으로, 관련되어 있는 트랜잭션과 요청의 묶음에 대한 정보를 추적하는 데 사용한다. 위 예에서는 한 번에 10 개의 세션만이 가능하도록 하였으며, 디폴트 값은 128개이다.


maxTransactions (비권장)
트랜잭션이란 말 그대로 데이터베이스 트랜잭션을 의미한다. maxRequest(위에 나옴)와 같이 디폴트 값인 32 대신 활성 트랜잭션 개수를 5로 줄인다.
[참고]
이 설정들은 이해하기 어려운 편인데 다행이도 이것들의 사용을 권장하지 않는 것들이다. 앞으로 출시 될 iBatis 에서는 이들의 수동으로 설정할 필요가 없어질 것이다. 그러므로 대부분의 경우 이를 수정하지 말고 그냥 놔두면 된다. 기본 설정은 적젉한 규모의 대부분의 시스템에서 잘 작동한다. 만약 이를 꼭 수정해야 한다면 항상 maxRequest 값이 maxSession 값보다 크고, maxSession 값이 maxTransactions 값도다 커야 함을 명심하라. 일반적으로 단순히 이 값들을 동일하게 유지하는 것이 좋다고들 한다. 또 이 설정들 중 어느 것도 직접적으로 커넥션 풀의 커넥션 개수나 혹은 애플리케이션 서버가 관리를 책임지고 있는 자원에 대해 영향을 미치지 않는다.
.
:
Posted by .07274.