Spring/JPA

Spring/JPA

[JPA] findById() , getById() 에 대한 생각

서론 이번 글에서는 findById(), getById() 메서드의 차이점과 제가 생각하는 느낀 점에 대해 말해보고자 합니다. 따라서 개인적인 생각이 담긴 글이니 어느정도 비판적인 시각으로 봐주시면 감사하겠습니다. 사전 설명 다음과 같은 Entity 연관관계를 가지고 있을 때 저희는 일반적으로 게시판에 해당하는 댓글을 추가하기 위해서클라이언트 요청으로부터 게시판의 Id, 댓글내용, 작성자 등 필요한 정보를 받게됩니다. 그러면 저희는 Serivce Layer에서 해당하는 게시판이 있는지 확인 후 Reply 객체를 생성해서 연관관계를 맺은 후 저장하게 됩니다. 간단히 이러한 로직이 만들어지게 됩니다. public void save(RequestReply requestReply) { // 해당하는 게시판이 존..

Spring/JPA

[JPA] 비관적 락 , 낙관적 락

JPA를 사용하게 되면 트랜잭션 격리 수준이 READ COMMITTED 정도가 된다. 격리 수준 READ UNCOMMITTED (거의 안 써요!) 커밋되지 않은 데이터를 읽을 수 있음 -> Dirty Read , Dirty Write 발생 가능 READ COMMITTED 커밋된 데이터만 읽기 -> Read Skew 발생 가능 REPEATABLE READ 트랜잭션 동안 같은 데이터를 읽게 함 -> Lost Update 발생 가능 SERIALIZABLE 모든 트랜잭션을 순서대로 실행 (실제로는 인덱스 잠금이나 조건 기반 잠금을 사용) 트랜잭션 격리 수준이 높아질수록 오버헤드가 커짐으로 잘 선택하여 사용해야 합니다. JPA를 사용하면서 READ COMMITTED 이상의 격리 수준이 필요할 때 비관적 락 , 낙..

Spring/JPA

[JPA] 순환참조 해결하기(JackSon 동작원리)

이번에 개인 프로젝트를 진행 함에 있어 1:N , N:1 양방향 관계에서 발생한 순환 참조 이슈를 겪어 포스팅합니다. 순환 참조가 일어나는 이유부터 같이 알아봅시다. Spring boot는 @ResponseBody를 선언 할시 Object를 json 상태로 변환하기 위해 HttpMessageConverters에서 jackson 라이브러리를 이용합니다. 자 여기서 spring boot가 jackson을 이용하니 jackson의 직렬화의 동작방법을 간단히 알아봅시다. (www.baeldung.com/jackson-field-serializable-deserializable-or-not) 해석입니다. Jackson의 작동방법은 기본적으로 멤버 변수의 접근 지정자를 우선적으로 봅니다. public class M..

jay Joon
'Spring/JPA' 카테고리의 글 목록