Page History
Info |
---|
JPA Repositori를 통한 일반적인 검색 기능은 여러가지 샘플을 통해 살펴보았습니다. 이번장에서는 영속성(Persistence)관점에서 Repository기능을 살펴보겠습니다. persistence 두번째의미이며, 상태를 저장하고 유지한다는점에서 IT전반적으로 사용되어지는 단어입니다. |
...
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를 이해하는데 가장 중요한 단어이며 ,직역하여 엔티티를 영구저장하는 환경이라는뜻입니다.
Persitence VS OraCle
JPA 영속성 라이프 사이클 | 오라클 DBMS 아키텍쳐 |
---|---|
DBMS에서도 사용자의 질의에 반응하여, 즉시 물리적인 디스크에 IO를 발생시키지 않습니다.
대량요청 처리의 안전과 성능을 위해 중간 레벨의 몇가지 Instance가 존재하며
이것은 데이터베이스를 사용하는 어플리케이션 에서 제어할수 있는 요소가 아닙니다.
DBMS에서 이루어지는 몇가지 기능인 캐시처리/지연쓰기 전략등 중앙집중화된 기능을
어플리케이션에서 축소화된 형태로 활용가능하며, 이것이 필요없으면 즉시처리전략으로 수행도가능합니다.
이것은 DB중앙에 집중된 부하기능을 어플리케이션이 분담처리할수 있다란 것입니다.
이 부분은 오라클 아키텍쳐와 비교하여 JPA의 영속성기능이 DBMS기능중 어떠한 부분이 닮아 있는지
비교하면서 개념을 익히는것이 도움이될듯합니다.
PersitenceContent를 잘 설명하는 참고자료입니다. ( 정리하는시점에도 이해가 안되고 어려운부분이 있네요, 우선 참고자료로만 언급합니다. )
- https://www.java-forums.org/ocpjbcd/52967-tutorial-review-jpa-entitymanager-operations-component-developer-exam.html
- http://wckhg89.tistory.com/10
Warning |
---|
JPA를 통한 즉시처리 데이터 제어 구현은 분명 코드가 짧고 쉽습니다. 하지만 JPA의 목적은 쉽게 사용하는것만이 다가 아닙니다. 성능분산 데이터처리 어플리케이션 설계를 위해 관계형 DB의 영속성개념과 JPA에서의 영속성 개념 두가지를 모두 잘이해해야 한다는점은 분명 어려운 난이도를 요구하며, 기존에는 도전조차 하지 못했던 과제일수도 있습니다. |
CRUD Repository
실제 JPA에서 쓰기/삭제/읽기처리가되는 영속성 제어를, JPA 기본 인터페이스인
CrudRepository를 활용하여 살펴보도록 하겠습니다.
Insert
장점: 데이터 입력을 위해, 추가구현없이 CrudRepository만 사용하면되며 객체접근법 활용이 가능합니다.
...