-
Notifications
You must be signed in to change notification settings - Fork 5
[BE] 개발 문서
JUHA edited this page Jul 12, 2024
·
3 revisions
- 스프링 부트 3부터 Java 17이 필수이기 때문에 선정했습니다.
- 장기 지원(LTS)이 2029년까지 제공되어 안정적인 유지보수가 가능합니다.
- 최신 기능과 보안 패치를 적용받을 수 있어 안정성과 성능이 향상됩니다.
- 초기에 프론트엔드 개발자와 함께 노션으로 API 문서화 작업
- 이후 개발 과정에서 Swagger 사용
- 실행 가능한 API 문서입니다.
- 자동화된 문서 생성합니다.
- 사용이 편리한 UI를 제공합니다.
- 현재 대용량 처리가 필요하지 않아 NoSQL 대신 RDBMS(관계형 데이터베이스)를 선택했습니다.
- 데이터 정합성을 중시하기 때문에 MySQL을 선택했습니다.
- MySQL은 오픈소스 데이터베이스로 무료로 사용할 수 있고, 커뮤니티 활성도가 높아 다양한 레퍼런스를 찾기 용이합니다.
- GitHub와의 원활한 통합으로 CI/CD 파이프라인 구축이 간편합니다.
- 관계형 데이터베이스를 사용할 때 SQL을 통해 데이터를 저장하고 조회해야 하는데, JPA를 사용하면 이를 추상화하여 개발자가 SQL에 종속되지 않고 개발할 수 있습니다.
- 객체지향 개념과 관계형 데이터베이스 간의 패러다임 불일치를 해결할 수 있습니다.
- Spring Data JPA를 사용하면 구현체(Hibernate 등) 교체가 용이하며, 저장소를 다른 형태로 변경하는 것도 간편합니다.
- Spring 팀에서 권장하는 방식으로, JPA를 더 쉽게 사용할 수 있습니다.
- 추후 결정 예정
- 우아한테크코스 코딩 컨벤션 적용
- Intellij 스타일 컨벤션 xml 적용
- 우아한테크코스 코딩 컨벤션
@Getter
@Builder
@EqualsAndHashCode
@NoArgsConstructor
@RequiredArgsConstructor
- 클래스 첫 줄 개행
- 클래스 마지막에 개행 X
- 파라미터 개수 상관 없이
of()
네이밍 사용
- 엔티티 객체 필드 간 개행
- return 전 개행
- DTO는
record
로 정의- Controller DTO는 validation 있는 경우 필드 간 개행
- VO는
class
로 정의
- 120이 넘어가는 경우 다음과 같이 개행
public boolean sendMail(String fromEmail,
String toEmail,
String subject,
String content) {
...
}
@Getter
@RequiredArgsConstructor
public enum OrderStatus { // enum은 첫 줄 공백 x
INIT("주문생성"),
CANCELED("주문취소"),
PAYMENT_COMPLETED("결제완료"),
PAYMENT_FAILED("결제실패"),
RECEIVED("주문접수"),
COMPLETED("처리완료"), // 마지막 값에 콤마 포함 세미콜론은 줄 분리
;
private final String text;
}
- 상수
- 멤버 변수(필드)
- 생성자
- 정적 팩토리 메서드
- 일반 메서드
- getter
- equals & hashcode
- Read
- Create
- Update
- Delete
중요도 높을수록 클래스에 가깝게
@RequiredArgsConstructor
@Transactional(readOnly = true)
@Service
public class ProductService {
...
}
@DisplayName("테스트 이름")
@Test
public class ProductTest {
...
}
- 클래스 레벨에
@Transactional(readOnly = true)
명시 - 메서드 레벨에
@Transactional
명시
- 메서드 네이밍
-
@DisplayName
에 구체적으로 작성 - 메서드 이름은 호출하는 메서드로 (중복될 경우 뒤에 숫자 추가해서 구분)
-
- 테스트 어노테이션 순서
@DisplayName
@ParameterizedTest
@Value
@Test
- given-when-then 주석 대신 개행 사용
- Controller: 추후 작성
- Service: 추후 작성
- Repository
- query creation으로 작성된 부분은 테스트 X
- JPQL 작성한 부분만 테스트
- Domain: 추후 작성
Last Updated: 2024-07-11