Versions Compared

Key

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

...

PersitenceContext 는 JPA를 이해하는데 가장 중요한 단어이며 ,직역하여 엔티티를 영구저장하는 환경이라는뜻입니다. 

Persitence VS OraCle

...

Image Removed

...

Image Removed

DBMS에서도 사용자의 질의에 반응하여, 즉시 물리적인 디스크에 IO를 발생시키지  않습니다.

...

이것은 데이터베이스를 사용하는 어플리케이션 에서 제어할수 있는 요소가 아닙니다. 

DBMS에서 이루어지는 몇가지 기능인  중요기능인  캐시처리/지연쓰기 전략등 중앙집중화된 기능을등을 JPA 어플리케이션에서 축소화된 형태로 활용가능하며, 이것이 필요없으면 즉시처리전략으로 수행도가능합니다.

이것은 DB중앙에 집중된 부하기능을 어플리케이션이 분담처리할수 있다란 것입니다.

이 부분은 오라클 아키텍쳐와 비교하여 JPA의 영속성기능이 DBMS기능중 어떠한 부분이 닮아 있는지

비교하면서 개념을 익히는것이 도움이될듯합니다. 

...

이것이 필요없으면  DBMS의 성능을 믿고 , 모두 즉시 처리전략으로 수행도가능합니다.

어쨋든  이러한 영속성기능은 동일성을 유지하는 조건내에서 DBMS에게 일을 적게 시킬가능성이 있다란것입니다.  


Persitence VS OraCle

Warning

JPA를 통한 즉시처리 데이터 제어 구현은 분명 코드가 짧고 쉽습니다. 하지만 JPA의 목적은

쉽게 사용하는것만이 다가 아닙니다.

성능분산 데이터처리 어플리케이션 설계를 위해 관계형 DB의 영속성개념과

JPA에서의 영속성 개념 두가지를 모두 잘이해해야 한다는점은 분명

어려운 난이도를 요구하며, 기존에는 도전조차 하지 못했던 과제일수도 있습니다.

CRUD Repository

실제 JPA에서 쓰기/삭제/읽기처리가되는 영속성 제어를, JPA 기본 인터페이스인

JPA의 영속성기능은 오라클 DBMS의 핵심기능중 축소된 Buffer Cache 처리기능과 유사해 보입니다.

필수적이지는 않으나 두가지 개념을 함께 익히면 JPA의 영속성개념을 익히는데 도움이 될듯합니다.


CRUD Repository

영속성은 어딘가에 존재하는 논리적인 개념으로 설명하기도 이해하기도 어렵습니다. ( (sad)  정리하느라 여러가지 참고자료를 봐도 어렵네요 )

실제 존재하는 객체인 CrudRepository를 활용하여 , 영속성 관련 기능을 하나씩 사용해보겠습니다. 익숙해지는 그날까지~~CrudRepository를 활용하여 살펴보도록 하겠습니다.

Insert

장점: 데이터 입력을 위해, 추가구현없이 CrudRepository만 사용하면되며 객체접근법 활용이 가능합니다.

단점: 단순한 Insert에서 단점은 없어보이나, 은닉된 트랜젝션 처리가 어떻게 되는지 살펴볼필요가 있습니다.의문: Insert 처리가 너무도 심플합니다.  은닉된 트랜젝션 처리는 어떻게 작동시킬수 있는지 확인이 필요합니다.  

No Format
//선언
public interface GroupRepository extends CrudRepository<GroupInfo, Long> {
}
public interface UserRepository extends CrudRepository<User, Long> {	
}


//사용
GroupInfo newGroup = new GroupInfo();
newGroup.setName("학생");
groupRepository.save(newGroup);

// 사용자 생성
User addUser = new User();
addUser.setName("minsu");
addUser.setEmail("test@x.com");
addUser.setGroupInfo(newGroup);    //SQL문에서는 외래키인 그룹ID를 지정하겠지만,객체모델에서는 이미 알고있는 참조지정을 합니다.                        
userRepository.save(addUser); 


올바른 데이터를 입력하는것은 간단합니다. 트랜잭션의 범위를 지정을하고

입력 과정에서 발생할수 있는 몇가지 이상행동을 수행 해보겠습니다. 

  • 제약조건을 걸고 무시하여 Insert하기
  • 허용되지 않는 데이터 및 범위 입력하기
  • 트랜젝션이 끝나기전에 어플리케이션 익셥션을 유발하여 중단하기
  • 쓰기 트렌젝션이 완료되기전, 읽기 시도
  • 대량의 입력처리와 나눠서 처리할수 있는방법 


Update


Delete