인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

김진완님의 프로필 이미지
김진완

작성한 질문수

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

객체와 테이블 매핑

Entity 는 DB 의 모든 정보를 가져야 하는지요?

작성

·

378

0

영한님 안녕하세요! 강의 너무 너무 잘 듣고있습니다.

다름이 아니라, Entity 와 Table 어느정도로 정확하게(?) 매핑하면 좋은지에 대해 질문드리고자 글 작성하였습니다.

매핑이라는 것은 양쪽을 1:1로 하도록 관계를 만드는 것 이라고 알고있습니다.

그래서 Entity 는 Table 의 모든 필드를 갖고있어야 한다고 생각했었는데, 동료는 `Entity 가 갖고있지 않은 필드를 Table 이 갖고 있을수도 있다`고 하였는데요.
(단일 테이블 전략을 쓰는경우 제외)

예를 들어, 

create member (
    id bigint,
    name varchar(10),
    email varchar(50),
    age int
);

이런 테이블이 있다고 할때, 동료는 사용자 엔티티가 만약 member 테이블의 age 가 필요없다면

@Entity
class Member {
    private Long id;
    private String name;
    private String email;
}

이런 형식으로 할 수 있다고 합니다.

물론 할수는 있겠지만, 저는 이건 좋은 설계가 아니라고 보여집니다..

가능한 복잡도를 줄이고 직관적인 구조로 만드는게 좋다고 생각해서, 왠만하면 Entity와 Table은 모든 속성(필드)들이 1대1로 매핑 되어야 한다고 생각하는데요.

동료는 Table 에는 Entity 에 담지 않는 요소가 있어도 상관없다고 생각해서 제 생각과 충돌이 있는데요.

현업에서는 가능한 어떻게 설계하려고 하시는지 궁금합니다.

추가로, 테이블을 만들고 나서 DBA가 관리를 위해 User TABLE에 컬럼을 추가한다던지 하는경우가 있는지도 궁금합니다..

길고 두서없는 질문이었는데, 읽어주셔서 감사합니다!

 

답변 1

0

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

안녕하세요. 김진완님

이 부분은 선택인데요.

저는 직관적인 구조를 선호합니다. 그리고 대부분 1:1로 사용합니다. (물론 예외가 있을 수는 있습니다.)

추가로 테이블은 DBA가 관리하지만, 개발자가 요청하는 경우에 컬럼을 DBA가 컬럼을 추가해준다고 생각하시면 됩니다.

감사합니다.

김진완님의 프로필 이미지
김진완

작성한 질문수

질문하기