Versions Compared

Key

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

...

데이터베이스의 관계 형성과 유사한 효과를 내려고 합니다. 그 목적을 달성하기위해 데이터베이스의 테이블과 객체지향의 클래스의 몇가지 차이점을 알아야합니다.

...

Class VS Table

DB
Class
OOP3개의 속성으로 구성된 튜플
속성명:정의
ID:integer
name:text
address:text

class User{

int ud
Table

Class GroupInfo{

string name;

}


Class User{

GroupInfo groupInfo;

string name;

string

address

email;

}

-- Todo 정리중

Class VS Table

...

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

...


Class GroupInfoNew{

string name;

List<User> userList;

}

GroupInfo

Image Added


User

Image Added



  • Class : 포함되는 객체는, 자신을 포함하는 객체 찾기가 어려우며,주인객체로 단방향접근이 일반적입니다. ( User → GroupInfo )
  • Table : 테이블은  자유로운 결합이 가능하며 연관관계 아이디를 통해 양방향접근이 가능합니다.  ( User ↔ GroupInfo )
  • Class : 클래스는 객체자체를 리스트화하여 가질수 있습니다.
  • Table : 테이블은 리스트형태의 데이터자체를 포함하는것은 불가능하며, 일대다 관계가 형성된 테이블을 통해 논리적 구성을 하여야합니다

...

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;
}
  • 프로그래밍모델에서 객체는 일반적으로 상속또는 포함관계를 통해 단방향 접근이 일반적입니다.. ( ClickLog→ User )
  • 데이터 베이스는 연관관계와는 별개로,  양방향 접근에 자유롭습니다. ( User ↔ ClickLog )
  • 프로그래밍 모델에서는 상속의 개념이 존재하여 다양한 객체를 포함할수가있습니다. 데이터베이스 에서는 상속개념이 없으며 리스트와같은 데이터Type을 포함할수 없습니다.
  • 데이터베이스에서는 상속의 개념을, 외래키를 통해 관계형성을 하며 논리적인 관계를 형성할수가 있습니다.

이와같은 차이를 극복하고, 데이터베이스의 Table을 객체지향적 인 모델로 변경을하여 사용하려면

JPA에서 지원하는 관계Class(Relation)을 형성(Join)하는 OOP)에 데이터베이스의 관계도(Relation)를 형성하는 몇가지 키워드의 의미를 알아야합니다.

아래 키워드는 OOP가 가진 특성을 잃지않고  OOP가 가진 한계를 관계형 DB처럼 , 관계형 DB의 속성을 확장을 해줍니다.

  • ManyToOne : 다대일 관계 매칭정보
  • JoinColumn : 외래키를 매핑때 사용함
  • mappedBy : 연관관계설정시 주인이 아님을 설정
  • OneToMany : 일대다 관계 매핑정보
  • OneToOne : 일대일 관계 매칭정보, 어느곳이나 외래키를 가짐
  • ManyToMany : 다대다 관계매칭정보, 맵핑테이블을 만들어서 사용하기를 권장
  • 연관관계주인 : 외래키가 있는곳이 주인이며 주인만이 수정가능 아닌경우 조회만가능

...