Versions Compared

Key

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

JPA의 컨셉은 Java Persistence API 의 약자로 두가지 큰 목적을 가지고 있습니다.

  • 데이터 베이스에 존재하는 모델링을 자바객체로 맵핑을 시킴
  • SP/SQL방식을 최대한 억제하고, OOP중심적 Entity설계및 영속성 Repository를 통한 데이터 제어

JPA와 별개로 데이터베이스를 잘 활용하는 방법은 데이터베이스를 잘 이해하는것임으로

연관부분이 있을시 JPA의 특성과 같이 설명 진행 예정입니다.


설명을 위해, 축약된 코드로 진행되며, 풀소스는 아래에서 확인가능합니다.

CodeLink : http://git.webnori.com/projects/WEBF/repos/spring_jpa/browse

JPA 개념 추가설명

...

데이터의 효율적인 관리를 위해서 몇개의 테이블구조로 나누어 저장후 외래키로 연관관계  연관관계 형성을하게 됩니다. 

이렇게 구조적으로 나뉜 테이블을 하나의 테이블정보인것처럼 정보를 머지를 하려면 JOIN을 통해 테이블을 지배해야합니다.

JPA 객체처리모델에서는 SQL문의 JOIN문을 직접적으로 사용하지 않고, 동일한 객체포함/상속등 OOP의 특성으로

데이터베이스의 관계 형성과 유사한 효과를 내려고 합니다.

그 목적을 달성하기위해 데이터베이스의 테이블과 객체지향의 몇가지 차이점을 알아야합니다.

Class VS Table


설명DBOOP
3개의 속성으로 구성된 튜플
속성명:정의
ID:integer
name:text
address:text


class User{

int ud;

string name;

string address;

}


-- Todo 정리중

Class VS Table

Emacs
Panel
Code Block
languagejava
theme
class User{
	int id;   // 특별한 구현없이, 사용자의 객체만으로 자신을 포함하는 특정정보(클릭로그)만 추출할수가 없습니다.
	string name;
	string email;
}
class ClickLog{
	int clickid;
	User user; // User객체 참조를 포함합니다.
	string clickurl;	
}
USER

id : integer

name : text

email :text



Code Block
languagejava
themeEmacs

TABLE User{
   int id   //자신의 키를 참조하는 다른 테이블에 접근가능합니다. on u.id = c.clickid
   varchar name
   varchar email   
}
TABLE ClickLog{
	int clickid
	int userid  //외래키를 통해서 접근가능합니다. on c.clickid = u.id
	varchar clickurl;
}

...