MyBatis에 Ehcache를 사용할 경우 주의할 점

By | 2월 5, 2016

※ 결과 객체 조작의 문제

mybatis-ehcache를 사용할 때, selectOne()의 결과로 캐싱된 객체를 얻을 경우,

그 객체에 변경을 가하면 이후 다른 곳에서 동일한 쿼리를 호출했을 때 변경된 결과(쿼리의 결과를 조작한 값)을 리턴하게 된다.  => 디버깅하기 대단히 어렵다!!!

그렇기 때문에 절대 select의 결과 객체를 가공해서는 안된다.

이 문제를 방지하기 위해서는 ehcache 설정에서 copyOnRead 옵션을 true로 주어야 한다.
그러나 이 설정은 성능과의 tradeoff가 있음도 고려해야 한다.

 
 
 
 
 
 
 

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments