인프런 커뮤니티 질문&답변

kamser님의 프로필 이미지
kamser

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

@MapsId 에서 cascade가 기본옵션인가요?

작성

·

401

0

@Entity
@Getter
@Setter
public class Board {
    @Id
    @GeneratedValue
    private Long id;
    private String title;
    @OneToOne(mappedBy = "board")
    private BoardDetail boardDetail;
}

@Entity @Getter @Setter
public class BoardDetail {
    @Id
    private Long boardId;

    @MapsId // BoardDetail.boardId와 매핑
    @OneToOne
    @JoinColumn(name = "board_id")
    public Board board;

    private String content;
}

public class OneToOne {

    private EntityManager em;
    private static final EntityManagerFactory emf = Persistence.createEntityManagerFactory("non");
    @BeforeEach
    void setUp(){
        em = emf.createEntityManager();
    }
    @AfterAll
    static void finish(){
        emf.close();
    }

    @DisplayName("1:1 식별 매핑일 경우 ")
    @Test
    void t1(){
        EntityTransaction tx = em.getTransaction();
        tx.begin();

        Board board = new Board();
        board.setTitle("T1 4번째 월즈 우승");

        BoardDetail boardDetail = new BoardDetail();
        boardDetail.setContent("상혁아 축하해");
        boardDetail.setBoard(board);
        em.persist(boardDetail);

        tx.commit();
    }
}

여기서 제가 부모 테이블인 board를 저장하지 않고 바로 boardDetail만 저장했습니다.

cascade옵션을 주지 않았는데도 부모 테이블에 갱신이 되더라구요

Hibernate: 
    call next value for hibernate_sequence
Hibernate: 
    /* insert non.Board
        */ insert 
        into
            Board
            (title, id) 
        values
            (?, ?)
Hibernate: 
    /* insert non.BoardDetail
        */ insert 
        into
            BoardDetail
            (content, board_id) 
        values
            (?, ?)

공식 문서에서도 Person 저장하고 PersonDetail을 저장하던데
이렇게 해도 동작하는 이유가 궁금합니다.

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. kamser님

도움을 드리고 싶지만 질문 내용만으로는 답변을 드리기 어렵습니다.

실제 동작하는 전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx


주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요

 

추가로 다음 내용도 코멘트 부탁드립니다.

1. 문제 영역을 실행할 수 있는 방법

2. 문제가 어떻게 나타나는지에 대한 상세한 설명

감사합니다.

김영한님의 프로필 이미지
김영한
지식공유자

링크가 잘못 되었네요.

다음을 참고해주세요

https://bit.ly/3fX6ygx

kamser님의 프로필 이미지
kamser

작성한 질문수

질문하기