Recent Posts
Recent Comments
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
관리 메뉴

ㅇ.ㅇ

[JPA] JPA 소개 본문

카테고리 없음

[JPA] JPA 소개

yun_ 2024. 12. 16. 00:05
반응형

JPA 소개

ORM (Object-Relational Mapping)

  • 객체와 관계형 데이터베이스 간의 차이를 중간에서 해결.
  • JPA는 자바 진영의 ORM 기술 표준으로 실행 시점에 자동으로 SQL을 생성하고 실행.
  • CRUD SQL 작성이 필요하지 않음.

JPA의 장점

  1. 생산성과 유지보수성 향상
    • SQL이 아닌 객체 중심 개발이 가능.
    • 데이터베이스 변경 시 코드 수정이 적음.
  2. 테스트 용이성
    • 간결한 코드로 인해 테스트 작성이 쉬워지고 버그 감소.

 

SQL을 직접 다루면 생기는 문제

반복 작업

  • 객체, DAO, SQL 작성, JDBC API 연결, 매핑 등 번거로운 작업.

SQL 의존적 개발

  • 속성을 하나 추가할 때마다 등록, 조회, 수정 코드를 모두 수정해야 함.

JPA의 이점

  • 직접 SQL을 작성하지 않아도 JPA가 제공하는 API를 통해 작업 가능.
// 데이터 저장
jpa.persist(member);

// 데이터 조회
Member member = jpa.find(Member.class, memberId);

// 데이터 수정
member.setName("새 이름");  // 값만 변경하면 자동으로 수정됨.

 

패러다임의 불일치

객체와 관계형 데이터베이스의 차이

  • 객체 지향 프로그래밍: 추상화, 캡슐화, 정보 은닉, 상속, 다형성 등.
  • 관계형 데이터베이스: 테이블, 행, 열, 외래 키, 조인 등.

패러다임 불일치로 인한 문제

  1. 상속
    • 객체는 상속을 지원하지만, 데이터베이스는 이를 직접 지원하지 않음.
    • JPA는 객체 상속 문제를 해결.
  2. 연관관계
    • 객체: 참조 사용.
    • 데이터베이스: 외래 키와 조인 사용.
    • JPA는 객체와 테이블 간의 연관관계 차이를 해결.
  3. 객체 그래프 탐색
    • 객체에서 참조를 통해 연관된 데이터를 탐색.
    • JPA는 지연 로딩을 통해 필요한 시점까지 데이터베이스 조회를 미룸.
  4. 비교
    • 데이터베이스: 기본 키로 행을 비교.
    • 객체: 동일성(==)과 동등성(equals()) 비교.
    • JPA: 같은 트랜잭션 내에서 동일한 객체를 반환하여 일관성 보장.
반응형