실무에서 @Transactional을 제거했더니 성능이 2배 향상된 이유
·
Spring/Hibernate
Spring에서 @Transactional(readOnly = true)는 DirtyChecking 모드를 Manual 모드로 바꿔줘 성능 최적화를 위해 사용된다고 알려져 있지만, 오히려 불필요한 JDBC 호출로 인해 성능이 저하될 수 있다. 이 글은 Elastic APM을 통해 확인한 실제 호출 로그를 바탕으로 readOnly 트랜잭션이 성능에 어떤 영향을 주는지 분석하고, 실무적으로 더 나은 대안을 제시한다. 아는 사람만 아는 @Transactional의 비밀다음 API는 @Transactional(readOnly = true)로 선언된 Service 메소드를 호출한다. Elastic APM을 통해 추적한 결과, 해당 API는 단 2개의 SELECT 쿼리만 실행함에도 불구하고, 여러 번 JDBC 호출..
[오류해결] java.lang.NullPointerException - 스프링 & 하이버네이트
·
Spring/Hibernate
처음 봤을 땐 뭐가 잘못된 건지 감도 오지 않았던 오류이다. 오류의 내용부터 살펴보자 근본 원인 (root cause) java.lang.NullPointerException com.bigbell.noticeboard.dao.BoardDAOImpl.getBoards(BoardDAOImpl.java:23) com.bigbell.noticeboard.service.BoardServiceImpl.getBoards(BoardServiceImpl.java:22) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun...
[오류해결] org.hibernate.hql.internal.ast.QuerySyntaxException
·
Spring/Hibernate
하이버네이트를 통해 쿼리를 사용하다보면 꼭 한 번은 만나볼 오류 중 하나이다. org.hibernate.hql.internal.ast.QuerySyntaxException: board is not mapped [from board order by id] org.hibernate.hql.internal.ast.QuerySyntaxException.generateQueryException(QuerySyntaxException.java:79) org.hibernate.QueryException.wrapWithQueryString(QueryException.java:103) org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorI..
[Spring] 하이버네이트(Hibernate) 사용하는법
·
Spring/Hibernate
메이븐에서 사용하는법👇👇👇👇👇👇 https://myvelop.tistory.com/71 [Maven] 하이버네이트 사용하기(feat. pom.xml) Maven파일에서 하이버네이트를 사용하는법을 알아보자 1. Hibernate에 들어가서 확인해보기 바로가기 👇👇👇👇👇👇 하이버네이트 홈페이지: https://hibernate.org/ Hibernate. Everything data. - Hibernate M. myvelop.tistory.com 1. Hibernate 설치 http://hibernate.org/ Hibernate. Everything data. - Hibernate More than an ORM, discover the Hibernate galaxy. hibernate.org Hiberna..