1. SQL에 의존적인 개발을 피하기 위해
1) Column이 추가/삭제/변경되는 경우, Application 단의 코드도 수정해야 함
2) SQL에 객체지향개념인 상속 관계를 적용할 수 없다
2. SQL 작성에 드는 시간을 절약하기 위해
1) SQL을 작성하다 보면 반복적인 작업을 할 때가 많다
- Select, Insert, Update, Delete
- Join해서 값을 가져오는 등..
2) 개발자의 실수를 줄일 수 있다
3) 다른 부분의 설계/개발에 좀 더 신경 쓸 수 있다
3. JPA의 장점
1) SQL 자동 생성
- SQL을 JPA에서 자동으로 생성해준다
- persist(insert), find(select), setData(update), remove(delete) 등의 메소드로 CRUD를 할 수 있다
2) 지연로딩, 즉시로딩
먼저, 테이블 A가 있고 테이블 A의 기본키를 외래키로 갖고 있는 테이블 B가 있다고 가정하자
a. 지연로딩
- 테이블 B를 조회했다가 테이블 A의 데이터가 필요할 때 테이블 A의 데이터를 조회하는 쿼리를 요청
b. 즉시로딩
- 한번에 테이블 A,B의 데이터를 가져옴
3) SQL 최적화
- 상황에 따라 지연로딩, 즉시로딩을 선택가능
- 같은 트랜잭션 안에서 Commit할 때까지 Query를 한번에 모아서 요청가능
4) 1차 캐시와 동일한 쿼리결과 보장
- 같은 트랜잭션 안에서는 같은 엔티티를 반환(캐시된 결과 반환, 조회성능향상)
- 같은 트랜잭션 안에서는 쿼리를 한번만 실행
4) 다양한 DBMS 지원
- Oracle, MyBatis 등 40여 가지 DBMS를 지원
'Spring > JPA' 카테고리의 다른 글
Entity-Table 매핑 - Entity와 테이블 매핑방법 (0) | 2023.02.12 |
---|---|
영속성 컨텍스트 이점 (0) | 2023.02.12 |
엔티티의 생명주기 (0) | 2023.02.12 |
영속성 컨텍스트 (0) | 2023.02.12 |
JAVA11 - javax.xml.bind.JAXBException 에러 (0) | 2022.07.14 |
댓글