ㅇ.ㅇ
[JPA] JPA 소개 본문
반응형
JPA 소개
ORM (Object-Relational Mapping)
- 객체와 관계형 데이터베이스 간의 차이를 중간에서 해결.
- JPA는 자바 진영의 ORM 기술 표준으로 실행 시점에 자동으로 SQL을 생성하고 실행.
- CRUD SQL 작성이 필요하지 않음.
JPA의 장점
- 생산성과 유지보수성 향상
- SQL이 아닌 객체 중심 개발이 가능.
- 데이터베이스 변경 시 코드 수정이 적음.
- 테스트 용이성
- 간결한 코드로 인해 테스트 작성이 쉬워지고 버그 감소.
SQL을 직접 다루면 생기는 문제
반복 작업
- 객체, DAO, SQL 작성, JDBC API 연결, 매핑 등 번거로운 작업.
SQL 의존적 개발
- 속성을 하나 추가할 때마다 등록, 조회, 수정 코드를 모두 수정해야 함.
JPA의 이점
- 직접 SQL을 작성하지 않아도 JPA가 제공하는 API를 통해 작업 가능.
// 데이터 저장
jpa.persist(member);
// 데이터 조회
Member member = jpa.find(Member.class, memberId);
// 데이터 수정
member.setName("새 이름"); // 값만 변경하면 자동으로 수정됨.
패러다임의 불일치
객체와 관계형 데이터베이스의 차이
- 객체 지향 프로그래밍: 추상화, 캡슐화, 정보 은닉, 상속, 다형성 등.
- 관계형 데이터베이스: 테이블, 행, 열, 외래 키, 조인 등.
패러다임 불일치로 인한 문제
- 상속
- 객체는 상속을 지원하지만, 데이터베이스는 이를 직접 지원하지 않음.
- JPA는 객체 상속 문제를 해결.
- 연관관계
- 객체: 참조 사용.
- 데이터베이스: 외래 키와 조인 사용.
- JPA는 객체와 테이블 간의 연관관계 차이를 해결.
- 객체 그래프 탐색
- 객체에서 참조를 통해 연관된 데이터를 탐색.
- JPA는 지연 로딩을 통해 필요한 시점까지 데이터베이스 조회를 미룸.
- 비교
- 데이터베이스: 기본 키로 행을 비교.
- 객체: 동일성(==)과 동등성(equals()) 비교.
- JPA: 같은 트랜잭션 내에서 동일한 객체를 반환하여 일관성 보장.
반응형