-
Spring Boot 시리즈 3편 – JPA로 DB 연동하기: Entity와 Repository 설계 전략기술과 산업/언어 및 프레임워크 2025. 4. 16. 17:15728x90
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'기술과 산업 > 언어 및 프레임워크' 카테고리의 다른 글
Spring Boot 시리즈 5편 – API 응답 구조 표준화 전략: 일관된 성공/실패 응답 설계하기 (0) 2025.04.17 Spring Boot 시리즈 4편 – @Valid 입력값 검증과 글로벌 예외 처리 전략 (0) 2025.04.17 Spring Boot 시리즈 2편 – REST API 설계와 Controller 작성 가이드 (1) 2025.04.15 Spring Boot 시리즈 1편 – 기본 설정과 프로젝트 구조 정리 (0) 2025.04.15 자바에서 IP 주소 얻는 방법 총정리 – 내부 IP부터 공인 IP까지 완벽 이해 (0) 2025.04.15