Page History
Info |
---|
JPA Repositori를 통한 일반적인 검색 기능은 여러가지 샘플을 통해 살펴보았습니다. 이번장에서는 영속성(Persistence)관점에서 Repository기능을 살펴보겠습니다. persistence 두번째의미이며, 상태를 저장하고 유지한다는점에서 IT전반적으로 사용되어지는 단어입니다. |
Table of Contents |
---|
JPA Repository
draw.io Diagram | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...
단순한 검색및 집계처리에 대한 사용법을 다시한번 정리하였습니다. 이것은 시작에 불과합니다.
Expand | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||
검색및 집계 처리검색 함수쿼리장점: 바람직한 네이밍룰에의해 검색 기능을 작동시킬수있다. 단점: 아규멘트가 길어질수록,네이밍도 같이 길어진다.
JPQL을 사용한 집계처리장점:SQL친화적으로 검색 인터페이스를 작성할수 있다. 단점:지원되지 않는 SQL문은 작동안한다.
Native 쿼리장점:네이티브 SQL문을 맘것 활용할수 있다. 단점:맵핑및 아규멘트전달에 어려움이 있으며, 다른 DB로의 호환성을 포기해야할수도 있다.
SQL 윈도우함수를 대체하는 랭킹처리장점:특수한 기능구현이 가능하고 어플리케이션에게 연산부담을 시킬수있다. 단점:커스텀한 로직이 늘어나 관리가 안될수 있으니 , 효율적인 SQL문 작성법부터 알아보자
QueryDSL 지원이되는 저장소장점:여러가지 검색옵션을 조합을 할수 있으며, 대표적으로 null 인자값에대해 유연하게 대처할수 있다. 단점: 초기셋팅이 번거럽고, DSL사용을위하 QEntityObject가 메타빌드로 자동추가 생성이 된다. (어플리케이션이 엔티티증가에따라 무거워진다는것)
참고 원본문서:
데이터 변경(Insert,Update,Delete)스토어 프로시져 이용장점: 전통적인 SP개발 방식을 이용할수 있다. 단점: 형상관리 분리로 인해, 서비스로직을 분리 관리해야하며, 상태가 없기때문에 JPA 중간저장소 기능을 100%활용못할수 있음 예를 들면, 높은 TPS요구에대해 EntityManager의 커넥션풀 기능이 비활성화되어 커넥션 Max에러가 발생할수 있음(직접관리해야함)
|
Persitence Context
PersitenceContext 는 JPA를 이해하는데 가장 중요한 단어이며 , 엔티티를 저장하고 유지하는 논리적인 장치쯤으로 생각해두자
...
JPA Persitence는 데이터 베이스 접근을 최소화하여 성능을 높일수있는 논리적인 장치를 제공해줍니다.
오라클과 비교해보는 JPA 영속성 장치
Expand | ||||||
---|---|---|---|---|---|---|
|
CRUD Repository
영속성은 어딘가에 존재하는 논리적인 개념으로 설명하기도 이해하기도 어렵습니다. ( 정리하느라 여러가지 참고자료를 봐도 어렵네요 )
실제 존재하는 객체인 CrudRepository를 활용하여 , 영속성 관련 기능을 하나씩 사용해보겠습니다. 익숙해지는 그날까지~~
Insert
장점: 데이터 입력을 위해, 추가구현없이 CrudRepository만 사용하면되며 객체접근법 활용이 가능합니다.
...
- 제약조건을 걸고 무시하여 Insert하기
- 허용되지 않는 데이터 및 범위 입력하기
- 트랜젝션이 끝나기전에 어플리케이션 익셥션을 유발하여 중단하기
- 쓰기 트렌젝션이 완료되기전, 읽기 시도
- 대량의 입력처리와 나눠서 처리할수 있는방법