Spring Data JPA 기초
Spring Data JPA는 JPA(Java Persistence API)를 Spring에서 쉽게 사용할 수 있도록 도와주는 라이브러리입니다.
JPA란?
JPA는 자바 객체와 데이터베이스 테이블을 매핑해주는 ORM(Object-Relational Mapping) 기술입니다.
Entity 정의
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String username;
@Column(nullable = false)
private String email;
// getters and setters
}
Repository 생성
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByUsername(String username);
List<User> findByEmailContaining(String email);
}
Spring Data JPA가 자동으로 구현체를 만들어줍니다!
서비스 레이어
@Service
@Transactional
public class UserService {
private final UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public User createUser(String username, String email) {
User user = new User();
user.setUsername(username);
user.setEmail(email);
return userRepository.save(user);
}
public Optional<User> findByUsername(String username) {
return userRepository.findByUsername(username);
}
}
주요 특징
- 자동 쿼리 생성: 메서드 이름으로 쿼리 자동 생성
- 페이징과 정렬: 기본 제공
- 트랜잭션 관리:
@Transactional로 간편하게 관리 - Auditing: 생성/수정 시간 자동 기록
다음 학습 주제
- QueryDSL을 사용한 동적 쿼리
- N+1 문제 해결 방법
- 성능 최적화 전략