반응형
백엔드 개발을 하다 보면 가장 자주 마주치는 기술 중 하나가 바로 JPA입니다.
"JPA는 ORM이야" 라고들 하는데… 그게 대체 뭘까요?
이번 포스팅에서는 JPA의 개념부터 실사용 예제까지 쏙쏙 정리해드릴게요 😊
🔍 JPA란?
JPA(Java Persistence API) 는 자바에서 데이터를 객체(Object) 로 다룰 수 있게 해주는 ORM 기술 표준입니다.
🎯 ORM(Object-Relational Mapping) = 객체와 관계형 데이터베이스를 매핑시켜주는 기술
JPA는 자바 진영에서 ORM을 구현하기 위한 표준 인터페이스를 제공하고,
대표적인 구현체로는 Hibernate, EclipseLink, DataNucleus 등이 있어요.
💡 왜 JPA를 써야 할까?
- ✅ SQL을 직접 작성하지 않아도 된다 (CRUD는 거의 자동!)
- ✅ 객체 중심의 프로그래밍 가능
- ✅ 유지보수와 리팩토링이 훨씬 쉬워짐
- ✅ 캐시, 지연로딩 등 성능 최적화 기능 제공
⚙️ 기본 사용 흐름
- @Entity로 객체를 정의
- @Repository를 통해 JPA 인터페이스 활용
- @Transactional로 트랜잭션 관리
- save(), findById() 등의 메서드로 데이터 접근
🧪 실전 예제 코드
📁 엔티티 클래스
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// 기본 생성자, Getter/Setter 생략
}
🗂 Repository 인터페이스
public interface UserRepository extends JpaRepository<User, Long> {
// 쿼리 메서드 자동 지원
List<User> findByName(String name);
}
🔧 서비스 클래스
@Service
@RequiredArgsConstructor
public class UserService {
private final UserRepository userRepository;
public User createUser(String name, String email) {
return userRepository.save(new User(name, email));
}
public List<User> searchByName(String name) {
return userRepository.findByName(name);
}
}
📡 컨트롤러 클래스
@RestController
@RequiredArgsConstructor
@RequestMapping("/users")
public class UserController {
private final UserService userService;
@PostMapping
public ResponseEntity<User> create(@RequestBody UserDto dto) {
User saved = userService.createUser(dto.getName(), dto.getEmail());
return ResponseEntity.ok(saved);
}
}
📌 추가 개념 (한 번쯤 들어봤다면 이거!)
- 지연 로딩(Lazy Loading) vs 즉시 로딩(Eager Loading)
- JPQL(Java Persistence Query Language)
- 영속성 컨텍스트 (Persistence Context)
🧑💻 이런 분들께 추천해요!
- Java/Spring 기반 백엔드 개발자
- SQL 대신 객체 지향적인 방식으로 DB를 다루고 싶은 분
- 스프링 부트와 데이터베이스 연동을 고민 중인 분
🧾 결론
JPA는 학습곡선이 살짝 있을 수 있지만, 한 번 익혀두면 수십 배의 생산성을 가져다주는 도구입니다.
이제는 선택이 아닌 필수 기술이 된 만큼, 꼭 익혀두면 좋아요! 🙌
반응형
'IT 기록 > Spring' 카테고리의 다른 글
💡 의존성 주입(DI) 완전 정복! – 개발자가 알아야 할 필수 개념 (0) | 2025.04.01 |
---|