기술과 산업/언어 및 프레임워크
Spring Boot 시리즈 3편 – JPA로 DB 연동하기: Entity와 Repository 설계 전략
B컷개발자
2025. 4. 16. 17:15
728x90
Spring Boot에서 JPA를 통해 데이터베이스를 연동하는 방법을 설명합니다. Entity와 Repository 설계 전략, 실제 DB 연결 설정까지 실무 중심으로 구성했습니다.
Spring Boot 시리즈 3편 – JPA로 DB 연동하기: Entity와 Repository 설계 전략
Spring Boot에서 백엔드 API를 개발할 때 핵심은 데이터베이스 연동입니다.
이번 편에서는 Spring Data JPA를 활용해 DB와 연결하는 방법, Entity 및 Repository 구조 설계, 그리고 연결 설정까지 단계별로 정리합니다.
📌 Spring Data JPA란?
JPA(Java Persistence API)는 자바 진영의 ORM(Object-Relational Mapping) 기술이며,
Spring Data JPA는 이를 더 쉽게 추상화하여 제공하는 Spring의 모듈입니다.
키워드: Spring Data JPA, Entity 설계, Repository 인터페이스, DB 연동, application.properties 설정
⚙️ 1. 의존성 설정
✅ Gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'com.h2database:h2' // 개발 환경용
runtimeOnly 'mysql:mysql-connector-java' // MySQL 사용 시
}
🗂️ 2. DB 연결 설정 – application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=1234
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
- ddl-auto=update는 개발 초기 단계에서 유용 (운영에서는 주의)
- show-sql=true로 SQL 로그 확인 가능
🧱 3. Entity 클래스 설계
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@Column(unique = true)
private String email;
// Getter/Setter
}
핵심 어노테이션
어노테이션 설명
@Entity | JPA가 관리하는 클래스임을 명시 |
@Id | 기본 키 지정 |
@GeneratedValue | 자동 생성 전략 지정 |
@Column | 컬럼 속성 설정 (nullable, unique 등) |
🧩 4. Repository 인터페이스 정의
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByEmail(String email);
}
- JpaRepository<T, ID>를 상속받으면 CRUD 자동 구현
- 메서드 네이밍만으로 쿼리 자동 생성 (쿼리 메소드)
🔄 5. 서비스 계층에서 사용하기
@Service
@RequiredArgsConstructor
public class UserService {
private final UserRepository userRepository;
public List<UserDto> getAllUsers() {
return userRepository.findAll()
.stream()
.map(user -> new UserDto(user.getName(), user.getEmail()))
.collect(Collectors.toList());
}
public UserDto createUser(UserDto dto) {
User user = new User();
user.setName(dto.getName());
user.setEmail(dto.getEmail());
userRepository.save(user);
return dto;
}
}
✅ 마무리 요약 – Spring Boot에서 JPA 설계 핵심
항목 핵심 포인트
Entity | DB 테이블과 매핑, @Entity, @Id, @Column 사용 |
Repository | 인터페이스 기반, 메서드 네이밍으로 쿼리 생성 |
설정 파일 | application.properties로 DB 연결 및 JPA 설정 |
개발 순서 | Entity → Repository → Service → Controller 구성 |
DTO 매핑 | Entity를 직접 외부 노출하지 않도록 DTO 사용 |
📌 다음 편 예고
Spring Boot 시리즈 4편: 입력값 검증과 예외 처리 – @Valid와 글로벌 핸들러 전략
🧠 실무 인사이트
- JPA는 개발 초기에는 빠른 생산성이 장점이지만, 복잡한 쿼리는 JPQL 또는 QueryDSL로 보완해야 합니다.
- @Transactional은 서비스 레이어에서 걸어주는 것이 일반적입니다.
- DB 스키마 관리에는 Flyway나 Liquibase 같은 마이그레이션 도구도 추천됩니다.
728x90