Page History
Info |
---|
JPA는 SQL문을 통해 어플리케이션을 작성했을때보다, 수많은 귀찮은 일을 하지 않아도된다는것을 실습을 통해 파악을 하였습니다. 하지만 실제 그것이 어떠한 SQL문을 수행하는지 또한 그 SQL문이 성능적으로 문제가 없는지 데이터베이스를 병행해서 공부해야하는 과제가 있습니다. 실행계획을 예상하고 측정하는것은 아주 광범위한 주제입니다. 데이터베이스를 공부했을때 성능에 관련된 실행계획은 SQL과 더불어 JPA에서도 이해해야하는 항목으로 생각됩니다. |
...
이것은 데이터중심에서 메시지중심으로의 설계를 가능하게합니다.
...
MS를 사용한 개발 진영 SQL은 SP를통한 통제 방식이 개발이 권장이 아니라 정책적 변경불가한 요소인곳도 많이 봐왔으며
...
에 대한 이해및 히스토리가 대부분 없는 경우도 많으며 이것을 다시 셋팅하는것은 거의 쿠테타에 가까운것이였습니다.
사실 MS는 JAVA오픈진영보다 훨씬더 빠르게 ORM을 통한 개발 요소를 내부에서 표준화하였고 통합하였습니다. -Entity FrameWork
그래서 어플리케이션 개발자가 ORM적용을 주도하려면 DB개발지식을 가지고 토론해야하기때문에 불편해지는 상황이 생길수 있습니다.
이것을 힘들게 주도하여 바꾸는것을 권장하지 않습니다.
언젠가 쓰일수 있으며, 왜 ORM은 우리회사에 적용이 어려운가란 주제는
RDB를 공부하는데 아주 좋은 주제가 될듯 합니다.
다음은 ORM 사용시 오해받는 몇가지 주제입니다.
- ORM의 쿼리는 통제가 안되고 느릴것이다. ==> TypeSafet한 방식의 쿼리빌드를 선택하고,표준쿼리를통해 성능문제를 해결하려고 합니다.
- ORM에서는 쿼리 최적화가 불가 ==> 네이티브 쿼리의 불편한점에대해 경고를 해줄뿐 JPA에서 날쿼리도 가능합니다.
- ORM은 쿼리 개발을 모르는 초짜가 사용하는 기술이다. ==> 테이블하나에서 수백가지의 검색쿼리 작성이가능합니다. 그리고 그것은 각각 다른 개발자가 작성을하여 SP화합니다. QueryDSL은 SQL을 이해못하면 람다식으로 SQL식을 풀어낼수 없습니다.
- ORM은 ERD를 그려낼지 모르는 개발자가 사용하는 기술이다 - ==> 기존개발방식이 ERD를 모르고 날쿼리로 잘못된 집합체로도 뷰어개발이 가능하지만, ORM에서 ERD관계를 맞추지못하면 실행 조차 안됩니다.
DB용어를 사용하여 조급더 고급지게 접근해보겠습니다.
- DDL(Data Definitison Language)의 테이블 객체의 생성(Create),변경(Alert),삭제(Drop)등을 수행
- DML(Data Manipulation Language) : 스키마객체의 데이터를 Insert/Update/Select등을 할수 있는 명령어(표준화되어있어서 거의 공통)
- DCL(Data Control Language) : Commit,RollBack,SavePoint등을 할수 있는 명령어(DB종속적인 경우가 많음)
JPA-ORM은 기본적으로 DDL/DML/DCL을 모두 할수 있는 구조입니다.
이것은 ORM이해가 아닌 기존 RDB가가진 언어입니다. 접근 정책정의에 있어서 중요요소 3가지를
빠트리고 이야기가 진행되는경우가 많지만... 정책결정은 위 3가지를 포함해서 이야기되어야하는 항목으로 생각됩니다.
SP를 이용한 장점:
...
...
실행계획
...
ORM을 이용한 장점:
- 고성능 분산처리 어플리케이션 설계를 위해서는 DML 특히 트랜잭션에 관련된 DCL이 가능해야함 ( Entity의 영속성및 Proxy개념 )
- SP내부에 작성되는 쿼리는 일괄적인 품질관리가 안되며, SP자체가 형상관리가 안되고 결국 SP는 이야기합니다. 나는 안쓰인다 고로 존재한다.
- 고성능 분산처리를 위해 트랜잭션에 어플리케이션이 안정적이고 더 효율적이게 관여할수 있는 개발방법이 많이 등장하였습니다.
- 인덱스를 걸고 실행계획을 안정적으로 유지하는것은 DBMS마다 약간의 차이가있고 그리고 그것은 비표준 SQL문 작성을 강요하며 일괄적으로 유지가 어렵습니다.
SP를 통한 DB개발에서 이야기하는 장점이 오늘날에는 단점이 된 케이스가 일부있고
서로 상반된 이야기를 하기때문에 풀어나가기가 어려운 주제임은 분명합니다.
...
조사하기
Trace된 SQL문을 그대로 복사하여, 실행계획을 조사합니다. 매번 이러한 과정을 거칠필요는 없을듯보이며
...
성능 측면에서도 실무에 적용이 될것으로 기대해봅니다.
이 부분은 개념과함께 구체적인 사용사례가 필요한 부분이며, 샘플을 좀더 준비할예정입니다.
Expand | ||
---|---|---|
| ||
|
...
|