JPA란?
- Java Persistence API
- 자바 진영의 ORM 기술 표준
ORM이란?
- Object-relational mapping(객체 관계 매핑)
- 객체는 객체대로 설계
- 관계형 데이터베이스는 관계형 데이터베이스대로 설계 - ORM 프레임워크가 중간에서 매핑
- 대중적인 언어에는 대부분 ORM 기술이 존재

데이터베이스 방언
JPA는 특정 데이터베이스에 종속 X
각각의 데이터베이스가 제공하는 SQL 문법과 함수는 조금씩 다름
가변 문자: MySQL은 VARCHAR, Oracle은 VARCHAR2 문자열을 자르는 함수: SQL 표준은 SUBSTRING(), Oracle은
SUBSTR()
• 페이징: MySQL은 LIMIT , Oracle은 ROWNUM
방언: SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 기능


주의
엔티티 매니저 팩토리는 하나만 생성해서 애플리케이션 전체에 서 공유
엔티티 매니저는 쓰레드간에 공유X (사용하고 버려야 한다). JPA의 모든 데이터 변경은 트랜잭션 안에서 실행
JPQL
JPA를 사용하면 엔티티 객체를 중심으로 개발 • 문제는 검색 쿼리
검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능
애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검 색 조건이 포함된 SQL이 필요
JPA를 왜 사용해야 하는가?
- SQL 중심적인 개발에서 객체 중심으로 개발 - 생산성이 증가된다.
- 유지보수가 편리하다
- 패러다임의 불일치를 해결할 수 있다.
- 성능이 좋다.
'JPA & Querydsl' 카테고리의 다른 글
| QueryDsl을 사용하면서, fetchjoin()을 사용해야 할 때는 언제인가? (0) | 2025.02.25 |
|---|---|
| fetchResults(), fetchCount() deprecated된 이유(Querydsl) (0) | 2024.05.20 |
| Transaction에 대하여 깊이있게.. (1) | 2023.12.28 |
| JPA 연관관계 매핑 (0) | 2023.12.05 |
| JPA Entity의 생명주기와 영속성 컨텍스트(Persistence Context) (0) | 2023.12.04 |