Spring Boot JPA: DB 주석(comment) 입력하는 법을 알아보았습니다.

2022. 5. 18. 21:05Developer

반응형

일정에 따라 신규 기능을 작성하려고 하는 찰나, 현 프로젝트 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

 

반응형