Back-end/Spring

[Spring/TIL] Github Actions 배포환경에서 Github Submodule로 application.yml 관리하기.

현재 프로젝트의 핵심 기능 구현이 어느 정도 마무리가 되면서 이제 배포환경을 고려해야 했습니다. 가장 흔하게 사용하는 Jenkins 말고 이번에는 Github Actions를 사용해 보기로 결정했는데요. 여러 방면으로 Jenkins와 Github Action의 장점을 따져본 뒤 지금 프로젝트에는 Github Actions가 더 낫다고 판단했습니다. 이번 포스팅에서는 Github Actions CI/CD 환경에서 프로퍼티 설정들을 관리하는 방법들에 대해서 정리해보려고 합니다. 0. Github Action을 사용한 이유? 첫 번째로 Jenkins는 초기 설정 시 Github Actions 보다 리소스가 많이 발생합니다. 호스팅을 처음부터 끝까지 직접해야 하기 때문에 문서 또한 관리를 해야 하죠. Githu..

2023.04.19 게시됨

Back-end/Spring

[Spring/TIL] columnDefinition = "TINYINT(1)" 사용 시 주의할 점

진행 중인 사이드 프로젝트에서 유저의 활성상태를 체크하기 위해 Member라는 엔티티에 activated 라는 Boolean 타입의 column을 추가해서 사용하고 있습니다. local에서 테스트를 할 경우 DB는 h2를 사용하고 있었는데요. 굉장히 오랜시간동안 Error executing DDL ~ 에러가 발생했고 해결한 과정을 짧게라도 기록해 놓으려고 합니다. 결과부터 정리하자면, H2 데이터베이스에서는 TINYINT 타입을 지원하지 않습니다. 먼저 Member 엔티티의 코드를 보겠습니다. @Getter @Entity @NoArgsConstructor @AllArgsConstructor @Builder public class Member extends BaseTimeEntity { @Id @Gener..

2023.04.12 게시됨

Back-end/Spring

[Spring/TIL] 댓글, 대댓글을 구현할 때 고려해봐야 할 점에 대하여

최근 서비스들을 봤을 때, 빠질 수 없는 기능 중에 댓글과 대댓글이 있습니다. 현재 진행 중인 프로젝트에도 댓글과 대댓글 기능을 추가했는데요. 댓글과 대댓글을 구현하는 방법 중에 여러 가지가 있지만 어떤 방법을 선택했고, 선택한 과정에서 알게 된 내용들에 대해 정리해보려고 합니다. 0. 첫 번째 생각 가장 먼저 생각을 했던 방법입니다. 굉장히 직관적이였죠. 대댓글 엔티티의 경우 부모댓글을 알 수 있는 필드가 반드시 필요하게 됩니다. 따라서 부모댓글의 PK값을 자식댓글에서 가지고 있도록 아래와 같이 설계했습니다. @Entity @Table(name = "pin_comment") @Builder @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsCons..

2023.04.05 게시됨

Back-end/Spring

[Spring/Java] @Builder 패턴 사용시 @AllArgsConstructor를 사용하는 이유

현재 개발을 할 때, 일반적으로 Entity 객체를 생성하는 경우 Lombok 라이브러리를 사용해서 빌더 패턴을 적용하고 있습니다. Entity 클래스에 적용된 어노테이션 중 @Builder라는 어노테이션이 있는데요. @Builder 어노테이션을 사용할 경우, 기본 생성자를 생성해 주는 @NoArgsConstructor 어노테이션을 사용하고 있습니다. 일반적으로 기본 생성자에 대한 접근 제어를 위해 @NoArgsConstructor(access=AccessLevel.PROTECTED)와 같이 사용하곤 합니다. 이유는 무분별하게 생성되는 객체들을 한 번 더 체크해 줌으로써 의도하지 않은 엔티티 객체를 만드는 행위를 방지할 수 있습니다. @Builder와 @NoArgsConstructor 어노테이션을 동시에..

2023.03.22 게시됨