개발자꿈나무
JPA 친해지기 본문
요즘 취준을 하면서 시험도 준비하고 있지만, 개발 공부도 놓으면 안될 것 같아 새로운 프로젝트를 만드는 것보다 이전에 했던 프로젝트에서 새로운 기술을 공부해서 퀄리티를 더 높이면 좋지않을까 싶어 먼저 JPA부터 공부하고 Mybatis를 사용했던 프로젝트에서 JPA를 사용한 프로젝트로 버전 업 시켜보려고 한다.
일단 JPA에 대해서 개념 정리와 실습을 통해서 정리하고, 프로젝트에 적용해볼 생각이다.
항상 Gradle만 사용을 해왔었는데 Maven을 이용해서 설정하는 방법들을 익히고, h2 데이터베이스를 이용해서 실습해볼 예정이다.
★ JPA란?
- JAVA Persistence API
- 자바 진영의 ORM 기술 표준
★ ORM이란?
- Object-relation-Mapping(객체 관계 매핑)
- 객체는 객체대로, 관계형 데이터베이스는 데이터베이스대로 설계하고 ORM 프레임워크가 중간에서 매핑해줌
★ JPA는 애플리케이션과 JDBC 사이에서 동작함
★ 그렇다면 구체적인 동작원리는 어떻게 될까?
- 객체를 저장하는 동작만 생각을 해보면 개발자가 직접 쿼리를 짤 필요없이 JPA가 객체를 분석 후, 쿼리문까지 알아서 작성해서 DB에 접근하는 원리!
★ JPA의 장점
- 제일 큰 장점은 쿼리문 하나하나 작성하는 시간을 단축할 수 있다는 것!
- 실무에서는 테이블의 갯수도 어마어마하고 하나의 테이블에만 접근해서 서비스를 제공하는 일보다 여러 테이블을 조인해서 접근해야하는 경우가 많은데 이럴 때 JPA를 쓴다면 쿼리문을 하나하나 작성할 필요가 없으므로 생산성이 매우 뛰어남
- 유지보수 시에도 추가하거나 삭제해야할 컬럼이 생긴다면, 필드만 수정하면 됨!
- JPA와 패러다임의 불일치도 해결할 수 있음
★ JPA의 성능 최적화 기능 - 자세한 내용은 뒤에서 하나씩 다룰 예정!
1. 1차 캐시와 동일성 보장
2. 트랜잭션을 지원하는 쓰기 지연
3. 지연 로딩
'자바 > JPA' 카테고리의 다른 글
준영속 (0) | 2023.07.23 |
---|---|
플러시 (0) | 2023.07.23 |
영속성 컨텍스트의 장점 (0) | 2023.07.23 |
엔티티 매니저 팩토리, 엔티티 매니저, 영속성 컨텍스트, 생명주기 (0) | 2023.07.09 |
JPA 프로젝트 생성 (0) | 2023.07.02 |