e0e868a2821305ea7200a12cf0dbd9b37ea10396
Bio Backend
기술 스택
- Framework: Spring Boot
- Database: PostgreSQL
- ORM: Spring Data JPA + QueryDSL
- Security: Spring Security + JWT
- Build Tool: Gradle
- Container: Docker + Kubernetes
- API Documentation: Swagger (SpringDoc OpenAPI)
개발 가이드
1. 프로젝트 구조
src/main/java/com/bio/bio_backend/
├── domain/ # 도메인별 패키지
│ └── user/
│ └── member/ # 회원 도메인
│ ├── controller/ # API 엔드포인트
│ ├── service/ # 비즈니스 로직
│ ├── repository/ # 데이터 접근
│ ├── entity/ # JPA 엔티티
│ └── dto/ # 데이터 전송 객체
├── global/ # 공통 설정
│ ├── config/ # 설정 클래스
│ ├── security/ # 보안 설정
│ ├── exception/ # 예외 처리
│ └── utils/ # 유틸리티
└── BioBackendApplication.java
2. API 문서화 (Swagger)
Swagger UI 접속
- URL:
http://localhost:8080/service/swagger-ui.html
- API Docs:
http://localhost:8080/service/api-docs
주요 어노테이션
@Tag(name = "Member", description = "회원 관리 API")
@Operation(summary = "회원 가입", description = "새로운 회원을 등록합니다.")
@ApiResponses(value = {
@ApiResponse(responseCode = "201", description = "회원 가입 성공"),
@ApiResponse(responseCode = "400", description = "잘못된 요청 데이터")
})
설정 파일
- SwaggerConfig.java: OpenAPI 기본 정보 설정
- application.properties: Swagger UI 커스터마이징
3. 트랜잭션 관리
기본 설정
@Service
@Transactional(readOnly = true) // 클래스 레벨: 읽기 전용 기본값
public class MemberServiceImpl {
// 읽기 전용 메서드 (별도 어노테이션 불필요)
public MemberDto selectMember(long seq) { ... }
// 쓰기 작업 메서드 (개별 @Transactional 적용)
@Transactional
public MemberDto createMember(MemberDto dto) { ... }
}
핵심 규칙
- 클래스 레벨:
@Transactional(readOnly = true)
기본 설정 - 메서드별: 데이터 수정 시에만
@Transactional
개별 적용 - 설정:
spring.jpa.open-in-view=false
(성능 최적화)
Description
Languages
Java
54.8%
Vim Script
43.8%
Perl
0.9%
HTML
0.5%