JPA - 객체와 데이터베이스 연결

송선호·2024년 11월 10일
post-thumbnail

JPA는 자바 애플리케이션에서 데이터베이스와 데이터를 주고받을 때 SQL을 직접 작성하지 않고도 데이터를 저장, 수정, 삭제, 조회할 수 있게 도와주는 API다.

목적으로는 객체 지향 프로그래밍(OOP) 언어인 자바의 객체(Entity)를 관계형 데이터베이스(RDB)의 테이블에 매핑하여 데이터를 쉽게 관리하는 것이다.

<JPA의 주요 개념>

  • 엔티티(Entity): 데이터베이스 테이블에 대응되는 자바 객체. @Entity 어노테이션을 사용해 정의하며, 각 객체가 데이터베이스의 레코드에 해당된다.

  • 영속성 컨텍스트(Persistence Context): JPA가 객체를 관리하는 공간. 객체 상태를 관리하며 트랜잭션이 끝날 때 데이터베이스에 반영해 준다.

  • 리포지토리 인터페이스: 데이터 접근 로직을 제공하며, findBy와 같은 쿼리 메서드를 통해 간단한 쿼리는 SQL문 작성 없이 사용할 수 있다.

<JPA의 장점>

  • SQL 작성 최소화: 기본적인 CRUD 작업에 SQL문을 직접 작성할 필요가 없어 코드가 간결해진다.
  • 유지보수성 향상: 데이터베이스 구조가 변경되어도 코드 수정이 최소화되어 유지보수가 쉽다.
  • 객체지향적인 코드: 데이터베이스 작업이 자바 객체와 연동되므로 객체 지향 프로그래밍의 장점을 살려 개발할 수 있다.

<JPA 사용 시 주의할 점>

  • 학습곡선: ORM(Object-Relational Mapping) 방식에 익숙하지 않다면 초기에 학습이 필요할 수 있다.
  • 복잡한 쿼리: 간단한 쿼리는 쿼리 메서드로 충분하지만, 복잡한 SQL은 별도로 작성해야 하는 경우가 있다.

간단한 예제)

  • 엔티티 클래스: 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를 공부하면서 생소한 부분도 많고 아직 알아야 할게 너무 많다는 걸 느꼈다. 오늘 뿐만이 아니라 공부할게 얼마나 많은지 피부로 느끼는 중이다.. 끝이 안보이는 것 같기도 하고,, 하루도 게을리 하지 않고 꾸준히 잘 해낼 수 있을지 걱정되지만 끈기를 가지고 레벨 업 하는 마음으로 공부해야겠다.

0개의 댓글