Page History
...
draw.io Diagram | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
JPA를 사용하면 데이터베이스 사용을위해 사용을위한 어플리케이션 레이아웃에 영속성을 위한 저장소(Repository)가 존재합니다를 중간에 두게됩니다.
JPA Repository 가 Repository가 항상 이렇게 작동되는것은 아니나, DB객체를 직접 저장하지 않고 중간객체를 통해
...
- 기존 SQL/SP를 직접 호출하여 값을 얻어 처리하는 방식은, 로컬에 반환된 값을 사용하고 버리는 상태가 필요없는 방식이며 매번 호출이 필요합니다.
- 기존에는 상태가 없기때문에 데이터중심적 설계방식이였다고하면, JPA에서는 중간상태가 있기때문에 메시지 중심 설계 방식도 고려해야합니다.
- JPA에서는 저장소를 통해, 같은 값을 다시 읽는것을 시도할때 SQL중복호출을 막고 효율적인 읽기전략을 수행할수 있습니다.(Proxy전략,캐싱전략)
- JPA에서 쓰기전략은 어플리케이션 예외까지 트랜잭션영역에 포함할수 있으며, Repository에 임시저장후 원하는 타이밍에 실제 Update(Push)를 할수가 있습니다.(쓰기지연전략)
장점을 간략하게 요약하면 다음과같습니다.
- 1차 캐시기능
- 동일성보장
- 트랜잭션을 지원하는 쓰기지연
- 변경감지
- 지연로딩
...
단순한 검색및 집계처리에 대한 사용법을 다시한번 정리하였습니다. 이것은 시작에 불과합니다.
Expand | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||
검색및 집계 처리검색 함수쿼리장점: 바람직한 네이밍룰에의해 검색 기능을 작동시킬수있다. 단점: 아규멘트가 길어질수록,네이밍도 같이 길어진다.
JPQL을 사용한 집계처리장점:SQL친화적으로 검색 인터페이스를 작성할수 있다. 단점:지원되지 않는 SQL문은 작동안한다.
Native 쿼리장점:네이티브 SQL문을 맘것 활용할수 있다. 단점:맵핑및 아규멘트전달에 어려움이 있으며, 다른 DB로의 호환성을 포기해야할수도 있다.
SQL 윈도우함수를 대체하는 랭킹처리장점:특수한 기능구현이 가능하고 어플리케이션에게 연산부담을 시킬수있다. 단점:커스텀한 로직이 늘어나 관리가 안될수 있으니 , 효율적인 SQL문 작성법부터 알아보자
QueryDSL 지원이되는 저장소장점:여러가지 검색옵션을 조합을 할수 있으며, 대표적으로 null 인자값에대해 유연하게 대처할수 있다. 단점: 초기셋팅이 번거럽고, DSL사용을위하 QEntityObject가 메타빌드로 자동추가 생성이 된다. (어플리케이션이 엔티티증가에따라 무거워진다는것)
참고 원본문서:
데이터 변경(Insert,Update,Delete)스토어 프로시져 이용장점: 전통적인 SP개발 방식을 이용할수 있다. 단점: 형상관리 분리로 인해, 서비스로직을 분리 관리해야하며, 상태가 없기때문에 JPA 중간저장소 기능을 100%활용못할수 있음 예를 들면, 높은 TPS요구에대해 EntityManager의 커넥션풀 기능이 비활성화되어 커넥션 Max에러가 발생할수 있음(직접관리해야함)
|
...
PersitenceContext 는 JPA를 이해하는데 가장 중요한 단어이며 ,직역하여 엔티티를 영구저장하는 환경이라는뜻입니다.
Persitence VS OraCle
JPA 영속성 라이프 사이클 | 오라클 DBMS 아키텍쳐 |
---|---|
DBMS에서도 사용자의 질의에 반응하여, 즉시 물리적인 디스크에 IO를 발생시키지 않습니다.
...