IT/Spring
-
Mybatis 쿼리문 추출IT/Spring 2019. 6. 28. 15:16
일정시간 이상 걸리는 쿼리문을 DB에 저장할 일이 생겼다. (자동화는 항상 옳다) DB에 저장하기위해 쿼리문을 String으로 추출해야했고 Mybatis는 기본적으로 xml파일 설정으로 돌렸는데 이 경우에는 자바코드에서 다뤄야 했다. 어떻게 할지 머리를 굴리며 구글링을 해보니 SqlSession 객체를 통해 쿼리문을 추출하는 코드가 있었다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 private String getSql(String id, Map param) throws Exception{ String sql = sqlSession.getConfiguration().getMappedStatement(id).getBoundSql(param).getSql(); List paramMap..
-
Mybatis 캐시문제IT/Spring 2019. 6. 28. 13:18
회사에서 몇가지 버그를 잡던중에 호출할때마다 값이 변해야하는 쿼리문이 계속 같은값을 뱉는 버그가 있었다. 알고봤더니 Mybatis local session cache 문제로 동일한 쿼리문을 반복적으로 호출했기 때문에 계속 같은값을 부르고 있었다. 해결법은 의외로 간단했다. 1 2 3 여기서 1 2 3 4 아래와 같이 flushCache를 true로 useCache를 false로 해주면 캐싱문제는 해결된다. 이름으로 봐서 useCache 파라미터 하나만 false로 바꿔주면 될줄알았는데 둘다 해야 되더라(...) Mybatis 의 캐시문제를 해결하는 방법은 SqlSession객체를 써먹는 등 이 외에도 여러가지가 있지만 가장 지역적으로 적용하기 쉽고 좋은방법이라고 생각한다.