JPA는 자바 애플리케이션에서 데이터베이스와 데이터를 주고받을 때 SQL을 직접 작성하지 않고도 데이터를 저장, 수정, 삭제, 조회할 수 있게 도와주는 API다.
목적으로는 객체 지향 프로그래밍(OOP) 언어인 자바의 객체(Entity)를 관계형 데이터베이스(RDB)의 테이블에 매핑하여 데이터를 쉽게 관리하는 것이다.
<JPA의 주요 개념>
엔티티(Entity): 데이터베이스 테이블에 대응되는 자바 객체. @Entity 어노테이션을 사용해 정의하며, 각 객체가 데이터베이스의 레코드에 해당된다.
영속성 컨텍스트(Persistence Context): JPA가 객체를 관리하는 공간. 객체 상태를 관리하며 트랜잭션이 끝날 때 데이터베이스에 반영해 준다.
리포지토리 인터페이스: 데이터 접근 로직을 제공하며, findBy와 같은 쿼리 메서드를 통해 간단한 쿼리는 SQL문 작성 없이 사용할 수 있다.
<JPA의 장점>
<JPA 사용 시 주의할 점>
간단한 예제)
엔티티 클래스: User 엔티티를 만들어 테이블과 매핑하는 예
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// getters and setters
}
리포지토리 인터페이스: 간단한 CRUD 메서드를 자동 생성해주는 인터페이스.
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findByName(String name);
}
서비스 클래스: 데이터베이스 작업이 자바 코드에서 간단히 수행되는 방식 설명.
- 결론: JPA는 자바 애플리케이션에서 데이터베이스 작업을 더 쉽고 효율적으로 할 수 있게 해준다. 특히 엔티티와 리포지토리 패턴을 통해 객체 지향적인 코드와 데이터베이스 간의 연동을 간편하게 할 수 있다. JPA를 통해 더 깔끔하고 유지보수하기 쉬운 코드 작성이 가능하다.
- 학습 소감: JPA를 공부하면서 생소한 부분도 많고 아직 알아야 할게 너무 많다는 걸 느꼈다. 오늘 뿐만이 아니라 공부할게 얼마나 많은지 피부로 느끼는 중이다.. 끝이 안보이는 것 같기도 하고,, 하루도 게을리 하지 않고 꾸준히 잘 해낼 수 있을지 걱정되지만 끈기를 가지고 레벨 업 하는 마음으로 공부해야겠다.