Spring/JPA 3

[JPA] 다대일(N:1) 단방향 VS 양방향 정리

사이드 프로젝트로 게시판 만들기를 하고 있었는데, 게시글과 회원 엔티티를 N:1 단방향으로 해야할 지, 양방향으로 해야할 지 고민을 하다가 정리한 내용이다. (인프런 김영한 강사님 강의 질문 게시글의 내용을 일부 포함하고 있다) 게시글에서는 회원이 필요함. 기본적으로 글을 작성할 때 회원의 id가 필요하고, 이름이 필요할 수도 있음 회원에서는 게시글 엔티티가 필요할까?:  회원이 작성한 글을 조회할 때는 게시글 엔티티를 리스트로 가지고 조회할 수도 있고, 쿼리(em.find)를 날려서 조회할 수도 있다.(게시글에 있는 member를 조회)전자는 양방향이고, 후자는 단방향에 해당한다. 단방향을 사용해야 하는 이유 1)회원이 갑자기 뜬금없이 게시글 id를 참조하는 경우가 있을까? 게시글에 존재하는 다른 필드..

Spring/JPA 2024.09.29

[JPA] JPA 개발 - 도메인 분석 및 설계

JPA 개발 - 도메인 분석 및 설계#Spring/DB/JPA요구사항 분석먼저 기능 목록을 작성해보자회원 기능회원 등록회원 조회 상품 기능상품 등록상품 수정상품 조회주문 기능상품 주문주문 내역 조회주문 취소기타 요구사항상품은 재고 관리가 필요하다.상품의 종류는 도서, 음반, 영화가 있다.상품을 카테고리로 구분할 수 있다.상품 주문시 배송 정보를 입력할 수 있다.도메인 모델과 테이블 설계회원 - 주문 - 상품회원은 여러 상품을 주문할 수 있다. 한 번 주문할 때 상품을 여러 상품을 선택할 수 있고, 하나의 상품이 여러 주문에 포함될 수 있으므로 주문과 상품은 다대다 관계이다.하지만 이런 다대다 관계는 RDB 뿐만 아니라 엔티티에서도 거의 사용하지 않으므로 주문상품이라는 엔티티를 추가해서 일대다 + 다대일 ..

Spring/JPA 2024.09.29