본문 바로가기

JPA4

JPA 1차캐시의 동작 방식 만약 같은 테이블을 다른 entity 로 논리적으로 분리하게 되면 1차 캐시가 동작할까? 라는 질문으로부터 1차캐시가 어떻게 동작하는지 궁금해졌다.실제 1차 캐시가 동작하는 방식은 더 복잡하고, 연관관계가 있는 경우에는 또 다르게 동작한다. 그렇기에 해당 포스트에서는 연관관계가 없는 단일 테이블 조회에서 1차 캐시가 어떻게 동작하는지 살펴보고자 한다.1차 캐시란 무엇인가?우선 1차 캐시가 정확히 무엇인가? 라는 질문을 해야한다.JPA 에서 1차 캐시는 영속성 컨텍스트(Persistence Context) 를 의미한다.어플리케이션은 엔티티를 엔티티 매니저 를 통해 다루게 된다.즉, 엔티티 매니저를 통해 entity 의 상태 (managed, detached, removed 등) 을 관리하게 된다. 그리고 .. 2024. 7. 28.
AOP 활용 (feat. jpa 호출 로깅) AOP 에 대한 기본적인 개념을 이전 포스팅에서 알아보았다.https://pius712.tistory.com/33 스프링 AOP - 톺아보기aop 는 횡단 관심사를 분리하여 모듈화 한 것을 말한다.횡단 관심사란 비즈니스 로직이 아닌 그 외의 로깅, 트랜잭션과 같은 것들을 말한다.스프링을 사용하면 자주 만나게되는 @Transactional 이나 @pius712.tistory.com 이 AOP 를 활용하여, JPA repository 메서드 호출에 대한 로깅을 간단하게 구현하고자 한다.요구사항jpa repository 모든 메서드에 대해 로그를 남겨야함어떤 메서드가 호출했는지, 어떤 메서드가 호출되었는지 로그를 남겨야함jpa repository 의 time elapsed 로그를 남겨야함예외 발생시 messa.. 2024. 6. 6.
나는 테스트에서 @Transactional 붙이지 않겠다.. (feat. 동시성 삽질기) 재민님 유튜브: https://www.youtube.com/watch?v=PDhN6aiF7QQ 향로님 블로그: https://jojoldu.tistory.com/761토비님 페이스북 게시글: https://www.facebook.com/tobyilee/posts/pfbid037KmQz4TbwBfgkAXc8JjMjipMesF9iuTTWvMtUKirr3742cGfvVrq4Aft33CGmLWSl 로그인 또는 가입하여 보기Facebook에서 게시물, 사진 등을 확인하세요.www.facebook.com 한 때, 테스트에 @Transactional 을 붙일 것이냐 말 것이냐에 대한 논쟁이 개발자 커뮤니티에서 핫했었다.나는 별다른 생각이 없이, 회사에서 안 쓰기도하고 변경감지 관련해서 한번 실수한 이후로 그냥 안쓰고.. 2024. 5. 2.
영속성 컨텍스트와 트랜잭션의 관계 1. 영속성 컨텍스트와 트랜잭션의 관계 spring data jpa 만 사용하다보니, typescript의 mikro orm 사용하다가 헷갈리는 개념이 있었다. 그것은 바로 머릿속에 다른 것들은 지워지고, persistence context 는 당연히 transaction 단위로 할당 라는 개념만 남아있었던 것이다. 이것은 일부는 맞고, 일부는 틀린 얘기인데, spring 과 같은 컨테이너 환경에서 jpa 는 트랜잭션당 persistence context 를 가지고 있다. 즉, spring 환경 기준에서는 아래의 식이 맞으나 (OSIV 를 옵션을 끈 상태라면) , 다른 경우에는 아닐 수도 있다. transaction : persistence context = 1 : 1 만약 transaction 이 co.. 2024. 2. 18.