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

작성자 없음

작성자 정보가 삭제된 글입니다.

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

db컬럼 명과 class 멤버 명 통일성

작성

·

32

0

class Delivery {

 private Date deliveryPlanDate;
	
 @Column(name = "delivery_plan_date")
 private Date planDate;
}

 

이럴땐 둘 중 어떤게 더 효율적인가요:?

답변 2

0

안녕하세요. minn hyo님, 공식 서포터즈 y2gcoder입니다.

제가 minn hyo님의 질문을 제대로 이해한 것인지는 모르겠으나,

  1. 기본적으로는 DB 컬럼을 따라간다.

  2. DB 칼럼명이 다소 부적합해서 애플리케이션 단에서 수정이 필요하다면, @Column을 이용해서 매핑해준다.

방식으로 가는 것 같습니다. DB 칼럼명을 수정해주는게 엔티티가 깔끔해지겠지만, 해당 테이블에 대한 다른 의존성 체크, 사내 DB 컨벤션 등을 고려해야 한다면 저는 위의 방법을 추천하고 싶습니다! 특히 운영 중인 DB 테이블을 변경하기에는 아무래도 고려해야 할 요소가 많아지는 것 같습니다!

 

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. minn hyo님.

질문해 주신 내용은 JPA에서 엔티티 클래스의 필드와 데이터베이스 컬럼 이름의 명명 규칙에 관한 것입니다. 이러한 경우, 어떤 명명 규칙을 따르는 것이 좋을지에 대한 답변을 드리겠습니다.

  1. 일관성 있는 명명:

    • 통상적으로는 클래스의 멤버 변수 이름과 데이터베이스 컬럼 이름을 최대한 비슷하게 유지해서 가독성을 높이는 것이 좋습니다.
    • 만약 애플리케이션 전체적으로 통일된 규칙을 준수하는 것이 가능하다면, 일정한 규칙을 따르는 것이 유지보수에 유리합니다.
  2. 어노테이션 사용:

    • @Column(name = "실제 컬럼 명")처럼 사용하여 명확히 해두면, 초기에 클래스 설계 시 가독성이 떨어질 수 있지만, 데이터베이스로부터 데이터를 명확하게 매핑하는 데 도움을 줍니다.
    • 특히 컬럼명이 변경되거나, 여러 데이터베이스에 대한 지원을 고려해야 한다면 이 방법이 유리합니다.
  3. 선호되는 패턴:

    • 많은 개발자들은 통상적으로 클래스의 필드 명을 CamelCase와 같이 변수명의 룰을 따르고, 데이터베이스 컬럼은 snake_case를 유지합니다. 따라서, @Column 어노테이션으로 명명 규칙을 조정하여 두 구조 간의 명명 일관성을 확보할 수 있습니다.

관련하여, 유사한 주제를 다룬 질문을 공유해드리겠습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기