Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

사용방식에 만족스럽진 못하지만, 동일한 기능을, JPA Repository 인터페이스를 활용하여 수행하였습니다.


Warning

UNION과같이 JPQ이 JPQL이 지원하지 않는 명령문에서 JPA에서 바람직하게 어플리케이션의 데이터와

맵핑하는 기능은 사용할수 없어보입니다. 어렵게 맵핑할수 있는 방식도 있지만 ( UNION JPA ENTITY ECLIPSE LINK 등으로 검색하면 됩니다.)

준비해야할 코드들이 너무 많습니다.

JPQL은 객체중심 탐색모델로 ,Repository는 영속성을 사용한 객체를 통한 일관성있는 데이터 삽입/삭제등

JPA는 충분히 어플리케이션 내에서 도메인 로직을 처리하기에 충분히 강력하고 심플합니다.

하지만 데이터중심의 분석,통계를 위한 추출/엔티티 정의가 어려운 일괄업데이트등에는 그 목적이 맞지 않기때문에


UNION 은 특성상 ,모든 테이블을 합쳐서 처리하는 배치성에서 많이 사용되며 편리합니다.

모든것을 간단하게 합할수 있지만 데이터량에 따라 메모리풀의 위험성을 가지고 있으며,

이부분에 대한 튜닝을 위해 어렵고,코드가 길어지는 SQL문 작성능력및 트랜젝션처리가 요구되기도 합니다.


JPA에서는 대량의 데이터를 안전하게 부분처리를 하는 패턴을 설계할수 있으며

아래 아티컬을 참조합니다.

https://memorynotfound.com/hibernate-jpa-batch-insert-batch-update-example/8:2 정도가 적정비율로보고 있으며, 만약 JPA의 숙련도와 상관없이 네이트쿼리비율이 5가 되는 구조라고 하면 JPA는


교집합 구하기

Code Block
languagesql
themeEmacs
SELECT address,age,name,phoneNbr,sex FROM db_example.address a1
WHERE a1.name IN (SELECT name FROM db_example.address2);

SELECT a.address,a.age,a.name,a.phoneNbr,a.sex 
FROM db_example.address a, db_example.address2 b 
WHERE a.name = b.name;


SELECT address,age,name,phoneNbr,sex FROM db_example.address
INTERSECT
SELECT address,age,name,phoneNbr,sex FROM db_example.address2;

...