• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

섹션 4엔티티 매핑 질문입니다.

23.12.24 07:02 작성 23.12.24 11:16 수정 조회수 91

0

1. 객체와 테이블 매핑 5분 29초에서

@entity역할이 member라는 클래스라는 설계도를 기준으로 그림처럼 meber1entity,meber2entity,meber3entity 이런식으로 나타내게 하는 역할인가요?

  1. 기본 키 매핑 34분에서 아래그림 빨간색 박스처럼 em.persist(member52)하면 db sql=51 ||52 이렇게 되니까 에러나는거 아닌가요? 50이 아니라 기본 값을 그러면 10000을 줘야 하는거 아니에요?

     37분에서는 1번쨰는 1부터 51까지 주고 2번째는 51부터 100까지 준다는데 이게 무슨 뜻인지 이해가 어려워서요..

     

답변 1

답변을 작성해보세요.

1

David님의 프로필

David

2023.12.25

안녕하세요. ekek님, 공식 서포터즈 David입니다.

  1. @Entity는 해당 클래스를 영속성 컨텍스트에서 관리하는 엔터티로 지정하겠다는 말입니다. 엔터티로 지정된 클래스의 인스턴스들은 영속성 컨텍스트에 의해 관리될 수 있습니다. 만약 @Entity를 선언하지 않은 클래스의 인스턴스들을 영속성 컨텍스트로 관리하려고 한다면 관리되지 않는 타입이라는 예외가 발생하게 됩니다.

  2. allocationSize의 경우 한 번에 메모리로 가져올 시퀀스의 범위를 뜻합니다. 50이었으니 50개를 가져와서 초기 시퀀스 값인 1을 포함하여 51까지 메모리에 시퀀스 값을 가지고 있게 됩니다. 만약 52번째 엔터티를 저장하게 되면 발급할 수 있는 시퀀스(메모리에서 가지고 있는 시퀀스의 최대값)의 크기를 넘어서게 되므로 추가로 시퀀스를 조회하는 쿼리(allocationSize가 50이었으니 50을 추가로)가 발생하여 메모리에서 저장하고 있는 시퀀스 값은 101이 될 것입니다. 그리고 52라는 값을 부여할 것입니다.

감사합니다.