질문있습니다.
2
14 asked
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
20분 쯤 내용에서
실제 스키마의 기준이 DDL이라고 하더라도, 엔티티에 주요 제약과 인덱스를 함께 적어두면 코드만 봐도 DB 설계 의도를 파악할 수 있다는 장점이 있다고 말씀하셨습니다.
해당 강의가 녹화된 날짜가 예전임을 감안했을 때, 현재까지도 유효한 말씀일까요? 물론 회사마다 규칙이 있고 다를 수 있다고 생각하고 또 요즘은 어떻게 설계하는지 궁금합니다.
Answer 1
0
안녕하세요, 인프런 AI 인턴입니다.
hoon님 질문과 관련하여, 엔티티에 주요 제약 조건과 인덱스를 함께 기록해 DB 설계 의도를 표현하는 방식에 대한 유사한 답변을 아래에서 확인하실 수 있습니다.
JPA를 사용할 때 SQL 생성 질문
해당 답변에서는 다음과 같이 안내하고 있습니다.
- JPA가 생성하는 DDL을 그대로 운영 DB에 적용하기보다는, 생성된 쿼리를 확인하고 검토하는 것이 좋습니다.
- 운영 환경에서는
ddl-auto를create,create-drop으로 사용하면 테이블이 초기화될 수 있으므로 주의해야 합니다.
- 일반적으로 운영 환경에서는
validate또는none을 사용하고, 실제 스키마 변경은 별도의 데이터베이스 관리 도구나 마이그레이션 도구를 통해 관리합니다.
- 엔티티에
@Column,@Table(indexes = ...),unique,nullable등의 정보를 기록하면 코드만으로도 도메인 및 DB 설계 의도를 파악하는 데 도움이 됩니다. 다만 엔티티의 설정이 운영 DB 스키마의 유일한 기준이 되는 것은 아니며, 회사의 마이그레이션 정책과 DBA 검토 절차에 따라 달라질 수 있습니다.
따라서 강의에서 설명한 내용은 현재도 유효하다고 볼 수 있습니다. 다만 실무에서는 엔티티에 설계 의도를 표현하면서도, 실제 운영 스키마는 Flyway·Liquibase·수동 DDL 등 별도의 마이그레이션 체계로 관리하는 방식이 일반적입니다.
참고로 기존 질문의 원본 URL은 다음과 같습니다.
- 원본 질문: https://www.inflearn.com/questions/1098118
- 질문 관련 이미지: https://cdn.inflearn.com/public/courses/324474/course_cover/58c8632c-7a6e-4c76-9893-d7fffa32faf2/kyh_JPA_Spring2%20%E1%84%87%E1%85%A9%E1%85%A9%E1%86%A8%E1%84%89%E1%85%A1%206.png
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
리뉴얼 시기
0
92
2
변경감지(더티체킹) 이후 플러시할 경우의 쿼리
0
79
1
단일 테이블 시 null 값과 연관관계 필요성 질문
0
75
1
벌크연산에서 member.getAge 호출 시 영속성 컨텍스트에서 데이터를 가져오는건가요?
0
110
2
inheritance startegy 선택시 고려사항
0
77
1
Entity 동등성 비교
0
70
1
실무 조언 관련 질문입니다.
0
101
1
H2데이터베이스 파일 생성
0
116
2
서브쿼리 강의에서 ALL 예시 관련 질문드립니다.
1
104
2
수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?
0
90
1
JPQL 메소드와 락
0
90
1
Delivery @OneToOne
0
105
1
17강 4~5분대 테이블 값 조회가 안됩니다.
0
156
2
UnsupportedOperationException 발생
0
173
3
H2 Database 연결이 안됩니다.
0
135
2
연관관계 매핑 질문드립니다.
0
133
2
h2데이터베이스 실행오류
0
150
2
persistence.xml
0
163
2
양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?
0
128
1
영속성 컨텍스트
0
109
1
JPA 프록시
0
143
1
Native Query와 MyBatis
0
122
1
영속성 컨텍스트는 어떤 메모리에 저장되는건가요?
0
133
1
임베디드 타입 예시 코드 관련 질문
0
175
3

