본문 바로가기

전체 글64

[JPA] 밑바닥부터 알아보는 연관관계의 주인 연관관계의 주인이라는 것은 어느 블로그나 자료를 봐도 이해하기가 쉽지 않았습니다. 연관관계의 주인이라는 주제를 며칠동안 파 보고서 나온 결론은 다음과 같습니다. "연관관계의 주인이라는 것은, 양방향 연관관계 (Bi-Directional Relation) 에 있는 두 엔티티를 데이터베이스 테이블로 매핑할 때에, 어느 쪽 테이블에 다른 테이블을 참조할 외래키를 만들 것인가를 설정하기 위함이다" 단방향 연관관계 먼저 단방향 연관관계를 살펴보겠습니다. 예시를 들기 위해서, Member와 Locker라는 엔티티가 존재하며, 이들은 1 : 1 관계라고 가정해 보겠습니다. 즉, 하나의 회원은 단 하나의 라커를 소유할 수가 있으며, 하나의 라커는 단 한명의 회원에게만 속할 수 있는 현실을 모델링 한 것입니다. 그리고 .. 2024. 4. 13.
데이터베이스의 엔티티(Entity)에 대한 고찰, 그리고 JPA의 @Entity 어노테이션 JPA관련 프로젝트를 하면서 느끼는 것이지만,공부를 하며  "그런가보다" 하면서 무심코 넘어갔던 지식들이 많았음을 느끼고 반성합니다. 데이터베이스에서의 엔티티(Entity) 개념, 그리고 JPA로 프로젝트를 진행하면서 아무렇지 않게 붙여왔던 @Entity 어노테이션이 어떠한 의미를 지니고 있는 지 생각해보았습니다. 데이터베이스에서의 엔티티(Entity) 데이터베이스의 엔티티(Entity) 정의는 영미권 커뮤니티에서 다음과 같은 의미로 많이 사용합니다.  In a database, an entity is a piece of data that can be uniquely identified  좀 더 이해하기 쉽게 설명을 해 보겠습니다. 우리는 '학생'의 정보를 데이터베이스 관리 시스템(DMBS)에 저장해 관.. 2024. 4. 12.
상황을 통해 이해하는 JPA 영속성 전이 및 CASCADE 옵션 JPA에서의 영속성 전이(Transitive Persistence) Transitive라는것은 '이곳에서 저곳으로 옮겨진다'는 뉘앙스입니다. 영속성(Persistence)가 전이된다는 것은 무슨 의미일까요? JPA에서 영속성 전이(Transitive Persistence)라는 것은 다음과 같은 의미입니다. "영속성 컨텍스트에 의해서 관리되지 않던 엔티티가 영속성 컨텍스트에 의해 관리되는 상태로 변화한다" 당연히 이렇게 결론만 들어서는 무슨 말인지 이해하기가 쉽지 않습니다. 바로 예시를 보겠습니다. 먼저 다음과 같이 두 개의 엔티티를 정의하도록 해보겠습니다. 먼저 저는 데이터베이스에 member와 team이라는 것이 다음과 같은 형태로 저장이 되기를 바랍니다. 그래서 Member라는 엔티티와 Team이라는.. 2024. 4. 10.
Spring Data JPA에서의 Transaction 및 수정 작업 오늘의 주제는 다음과 같다. 다음 문장을 읽고 바로 그 질문에 대한 해답이 떠오른다면 본 게시글을 굳이 읽지 않아도 될 것이다. "Spring Data JPA에서, Service나 Repository 계층에 트랜잭션(Transaction)을 시작한다는 것을 명시하지 않았는데, 데이터의 수정 작업이 어떻게 올바르게 이루어질 수 있었는가" 다음은 내 개인 프로젝트중 한 부분이며, 서비스 계층에 존재하는, 회원의 별명(nick name)을 변경하는 메소드이다. 회원의 id와 nickname을 입력받아, 같은 별명을 사용하고 있는 회원이 존재하는 지 확인을 한 후, 없다면 해당 id에 해당하는 회원의 별명을 바꾸어 저장한다. @Service public class MemberService { private fi.. 2024. 4. 9.