2022. 5. 18. 21:05ㆍDeveloper
일정에 따라 신규 기능을 작성하려고 하는 찰나, 현 프로젝트 DB 테이블 내 컬럼에 대한 주석이 필요했다.
사족으로 시작해보자면, 이전에 장고 프로젝트에서도 컬럼별로 주석을 작성하고 싶어 알아보았는데 이 부분 지원이 잘 안되서 애매한 부분이 있었다. 현재까지 알기로는 PostgreSQL에서만 comment 작성을 지원하는 라이브러리는 있는 것으로 알고 있는데 MySQL정도만이라도 주석 작성기능을 장고에서 정식기능으로 지원해줬으면 좋겠다. 혹시 지원이 되는지 아시는 분은 댓글 좀 부탁드립니다.
https://github.com/vanadium23/django-db-comments
GitHub - vanadium23/django-db-comments: Move your model's verbose name and help_text to database comments.
Move your model's verbose name and help_text to database comments. - GitHub - vanadium23/django-db-comments: Move your model's verbose name and help_text to database comments.
github.com
아무튼 스프링 부트 기반 프로젝트에서 DB에 주석다는 방법은 총 세가지로 분류된다.
1. 노가다
워크벤치나 dbeaver 등 툴을 이용하여 각 컬럼에 comment를 수동으로 작성해준다. 이는 매우 효율적이지 않은 방법이고 개발 진행 간 DB를 날리거나 한다면 또 새로운 노가다의 세계로 인도할 수 있다...
2. 스프링부트 2.6버전 미만: Column 어노테이션 이하 columnDefinition 이용
@Column(columnDefinition = "integer not null comment '상태 (0: 사용함, 1: 사용안함)'")
private Status status = Status.USE;
위 예시와 같이 columnDefinition 내 데이터 타입, 제약조건 등과 함께 comment 를 이용하여 주석을 작성해준다.
*주의*
해당 내용은 테이블을 '신규 생성'할 때 적용된다.
현재 개발 간 ddl-auto 옵션을 update로 주고 있어 상기내용은 반영이 되지 않아 개발계가 아닌 로컬 DB에서 생성 및 테스트를 진행하여 주석이 잘 적용되는 것을 확인하였다.
3. 스프링 부트 2.6버전 이상: @Comment 어노테이션 사용
오늘 열심히 구글링하면서 Okky에 어느 분이 올려주신 내용을 보았다. 스프링 부트 2.6버전부터 공식적으로 커멘트를 달 수 있는 기능을 제공한다고 한다. 아마 해당 어노테이션을 사용하면 DB 초기화 또는 신규 생성을 통하지 않고도 될 수 있을 것 같은데 현재 프로젝트는 버전이 낮아 테스트를 못해보고 있다. (추후에 직접 해보고 업데이트 해보겠습니다!)
https://okky.kr/article/1160379
OKKY | 이제 JPA 사용 시 컬럼 코멘트를 달 수 있네요
Comment가 추가됐습니다. 원래 columnDefinition로도 되긴 했는데 잘 안쓰였죠. 하이버네이트 5.6에 들어왔고, 스프링부트 2.6부터 하이버네이트 5.6을 사용하기 때문에 스프링 부트 2.6부터 사용하실 수
okky.kr
이렇게 간단히 정리해보았고, 하기 블로그의 도움을 꽤 많이 받았습니다. 감사합니다!
https://mudchobo.github.io/posts/spring-boot-jpa-mysql-comment
Spring Boot JPA - MySQL 컬럼 주석 달기. - mudchobo devlog
JPA에서는 comment를 따로 지원하지 않는다. 이게 이유를 찾아보니 일부 데이터베이스가 컬럼 comment를 지원하지 않는 것 같다. 하지만, MySQL에 comment를 달아두고 싶었다(사내 보안 정책이 꼭 달아야
mudchobo.github.io
'Developer' 카테고리의 다른 글
WIL_220603 (0) | 2022.06.03 |
---|---|
백엔드 기초, 이정도는 알아야지!에 대한 정리(feat. 튜터 모임) (0) | 2022.05.20 |
Lombok: @Builder.Default (빌더 패턴에서 기본값 세팅하기) (0) | 2022.05.18 |