java 2

[JPA] 객체형 필드 사용 Entity, Select 조회 시 Update 실행 이슈

이슈 주제 : 객체형 필드 사용 시 Dirty Checking이 발생하는 경우 얼마전 회사에서 제법 큰 서비스 리뉴얼 배포를 진행했는데, 조회 로직에서 알수 없는 update query 가 발생하는 이슈를 파악했다. JPA가 이슈를 일으킨 것인데 (정확히 말하자면 JPA를 잘못쓴 개발자(It's me)...) 객체형 필드를 사용한 특정 Entity 에서만 이슈를 발생시키고 있는 것을 파악했다. 이슈를 파악하고 해결한 과정은 아래와 같다. 객체형 필드를 Entity에 사용한 경우 JPA 트렌젹센이 끝나는 시점에 JPA Dirty Cheaking 발생하여 의도하지 않은 Update Query 를 진행한다. *객체형 필드 : Class를 객체로 사용하는 필드를 말한다. JPA는 Entity 조회시 영속성 컨텍..

JPA 2023.03.12

[Spring] 실무에서 Logger를 사용하는 이유

Spring 김영한 님 강의를 듣다 보면 지금은 공부하는 중이라 System.out.print(이하 sout)으로 콘솔로그를 찍는다고 말씀하시는 것을 자주 들을 수 있다. 실무에서는 sout 대신 logger를 사용한다고 말씀하시는데 실제 개발자가 되어 보니 sout 으로 로그를 찍지 않는다. 그 이유는 뭘까? 친절하게도 mvc1 강의에서 로깅관련 강의를 1강 추가해주셨다. 주니어 개발자 관점에서 System.out.print 를 사용하지 않고 logger 를 사용한 이유를 알아보자 로그 선언 로그를 사용하기 위해서는 아래와 같이 선언한다. private final Logger log = LoggerFactory.getLogger(getClass()); // 또는 @Slf4j : //롬복 사용 가능 로그..

Spring 2023.02.05