티스토리 뷰
728x90
반응형
SQL을 직접 다룰 때 발생하는 문제점
- 진정한 의미의 계층 분할이 어렵다
- 엔티티르르 신뢰할 수 없다
- SQL에 의존적인 개발을 피하기 어렵다
JPA
Java ORM(Object-Relation Mapping) 기술 표준 API
객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결
정교한 객체 모델링을 할 수 있고 객체지향 개발에 집중할 수 있다
- 생산성 : SQL을 작성하고, JDBC API를 사용하는 반복적인 일을 JPA가 대신 처리
- 유지보수 : JPA가 대신 처리해주므로 수정해야할 코드가 줄어듦
- 패러다임의 불일치 해결 : 상속, 연관관계, 객체 그래프 탐색, 비교하기 해결
- 성능 : 애플리케이션과 DB 사이에서 다양한 성능 최적화 기회 제공
- 데이터 접근 추상화와 벤더 독립성 : 특정 DB 기술에 종속되지 않음
JPA vs MyBatis
- MyBatis는 SQL Mapper. 객체와 SQL을 매핑하는 방식
- JDBC API 사용과 응답결과를 객체 매핑하는 일은 대신 처리
- 개발자가 SQL을 직접 작성. SQL에 의존하는 개발
- JPA는 복잡한 쿼리보다 실시간 처리용 쿼리에 더 최적화
- ORM 사용은 Entity에 맞는 테이블 생성
- 기본적인 CRUD 자동화로 생산성 향상, 테스트 코드 작성 용이
- 정교한 객체 모델링 설계와 객체지향 프로그래밍을 위해 ORM 사용
- 복잡한 SQL을 작성하는 것은 QueryDSL 사용
JPQL vs SQL
- JPQL(Java Persistence Query Language)로 필요한 데이터만 DB에서 조회. 검색 조건이 포함된 SQL 사용
- JPQL은 엔티티 객체를 대상으로 쿼리
- SQL은 DB 테이블을 대상으로 쿼리
728x90
반응형
'Spring > JPA' 카테고리의 다른 글
[Querydsl] JPASQLQuery addFlag() 를 사용해서 SQL 힌트 적용 (0) | 2024.12.02 |
---|---|
JPA 영속성 관리 (0) | 2020.05.24 |
반응형
300x250