개발 진행 #1

Luzern·2026년 1월 5일

Project

목록 보기
1/6

깃허브 관련

브랜치 구조

  • main : 제품으로 출시될 수 있는 브랜치
  • develop : 다음 출시 버전을 개발하는 브랜치 (main에서 뽑아서 작업)
  • feature/(작업하는기능) : 기능을 개발하는 브랜치 (develop에서 뽑아서 작업)
  • fix/(수정하는문제) : develop 브랜치에서 문제가 생긴 경우 (develop에서 뽑아서 작업)
  • hotfix/(수정하는문제) : main 브랜치에서 문제가 생긴 경우 main에서 바로 뽑아서 작업

머지는 rebase and merge로 한다.

커밋 메시지 구조

type: subject

body

type은 아래와 같다.

  • feat : 새로운 기능 추가
  • fix : 버그 수정
  • docs : 문서 수정
  • style : 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우
  • refactor : 코드 리펙토링
  • chore: 빌드 업무 수정, 패키지 매니저 수정 (하기 싫은 일)

예시) feat: 로그인 버튼 구현

body는 옵션이다. 한 줄 당 72자 내로 작성한다. 무엇을 왜 변경했는지에 대해 초점을 둔다.

배포는?

배포는 아직 아무도 경험한 적이 없어서, CI / CD 는 마지막 스프린트 때 적용해보기로 결정했다.

옷장 관련 Controller, Entity, DTO 개발 단계

@MappedSuperClass
자식 칼럼 중 공통된 칼럼을 부모 클래스로 모으고 객체 상속 관계로 만든다.

현재 우리는 옷장, 착용 등 다양한 곳에서 생성 시간과 수정 시간을 사용하고 있다. 부모 클래스 BaseEntity에서 이 두 칼럼을 관리하기 위해 이 애너테이션을 써준다.

@EntityListeners(AuditingEntityListener.class)

등록일, 수정일과 같은 메타데이터를 자동화해주는 애너테이션이다. 엔티티가 데이터베이스에 INSERT, UPDATE 등이 됐을 때 특정 필드에 값을 자동으로 채워준다.

이 안에는 또 다른 애너테이션이 존재하는데,

어노테이션역할설명
@CreatedDate생성일자엔티티가 생성되어 저장될 때 시간이 자동 저장됩니다.
@LastModifiedDate수정일자엔티티의 값이 변경될 때 시간이 자동 저장됩니다.
@CreatedBy생성자엔티티를 생성한 사람의 ID를 저장합니다. (설정 필요)
@LastModifiedBy수정자엔티티를 마지막으로 수정한 사람의 ID를 저장합니다.

DTO에서 record 타입

record는 변경 불가 데이터 객체를 쉽게 만들 수 있게 하는 클래스 타입이다.

메서드 자동생성, 생성자 자동 생성, 필드 불변성 보장 (private final 로 자동 선언) 따라서 final을 선언할 필요가 없다.

record의 주된 목적은 객체 간에 불변 데이터를 전달하는 것이므로 DTO를 표현하는 데 적합하다.

JSON이나 XML 데이터를 나타내는 데이터 전송 객체를 다룰 때 특히 유용하다.

public class User {
    private final String name;
    private final int age;

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() { return name; }
    public int getAge() { return age; }

    @Override
    public boolean equals(Object o) { ... }
    @Override
    public int hashCode() { ... }
    @Override
    public String toString() { ... }
}

를 record를 사용하면

public record User(String name, int age) { }

끝. {} 대신 ()를 사용하는 것을 외워두자.

profile
그냥 기록용...

0개의 댓글