제목 | ORM 라이브러리 DMZ 강좌 1부 : 소개 | ||
---|---|---|---|
글쓴이 | 케이든 | 작성시각 | 2009/08/23 14:10:40 |
|
|||
CodeIgniter ORM Library 중에 하나인 DMZ 에 대하여 강좌를 시작할까 합니다. 유저가이드를 여러번 읽어봣지만 실력부족으로 고급기능 쪽은 이해못하는 부분이 많아서 강좌가 몇부로 나눠질지는 아직 모르겠습니다. 제 1부는 CI에서 DMZ가 어떠한 방법으로 사용되는지 설명합니다. CodeIgniter에 ORM 라이브러리가 DMZ, DataMapper 이렇게 2개가 있습니다. 한개 더 있는데 링크가 사라졌네요 - - DMZ를 제외한 2개는 현재 개발이 멈춘 상태입니다. dataMapper을 이어받아 현재 계속 개발중인게 DMZ입니다. 고로 유일하다고 볼수있습니다. DMZ을 사용하는 장점은.. 첫째 db를 오브젝트화 시켜서 다룰수있고 (테이블과 model이 1:1 입니다), 둘째 insert나 update 할때 값을 db에 넣기전에 검증을 할수있습니다. 셋째 테이블과 테이블의 relationship을 다루기가 간단합니다. 물론 active record를 기반으로 만들어졌고 동일하게 사용할수있습니다. ( 모든 active record method, chaning 사용 가능) 잡소리 접고 바로 코딩을 봅시다. 1. DB에 데이터 입,출력 먼저 기본적인 데이터를 저장하고 부르는것부터 비교해 보겠습니다. A. insert data - Active Record - // user 입력 $this->db->set('username', 'kaden'); $this->db->set('password', 'nedak'); $this->db->set('email', 'kaden@@kad.en'); $this->db->insert('users'); - DMZ - // user 입력 $u = new User(); $u->username = 'kaden'; $u->password = 'nedak'; $u->email = 'kaden@@kad.en'; $u->save(); 이처럼 테이블에 있는 필드를 오브젝트화 시켜서 관리하게 됩니다. B. select data - Active Record - $this->db->where('username','kaden'); $this->db->get('users'); - DMZ - $u = new User(); $u->where('username','kaden'); $u->get(); // or $u = new User(); $u->get_by_username('kaden'); DMZ 에서 아래코드처럼 get_by_{필드명}(); 함수로 바로 불러올수 있습니다. 요게 참 매력적이더군요. 2. relationship 설정 relationship 은 다른 테이블을 서로 연관지어 관리 하게 됩니다 종류에는 one to one, one to many, many to many 총 3가지가 있습니다. 조금 더 나아가서는 self relationship, multi relationship 이 있습니다. 1. one to one worker 테이블과 workplace 테이블이 있다고 합시다. worker 는 한곳의 workplace에서만 일을 할수있고, workplace에는 한명의 worker만 일을 할수있다고 하면 one to one 관계가 형성됩니다. 제가 JOIN은 약해서 Active Record 예제는 없이 하겠습니다. - DMZ - // call user kaden $w = new Worker(); $w->get_by_name('kaden'); // call workplace 우리집 마당 $p = new Workplace(); $p->where('location','우리집 마당'); $p->get(); // set up one to one relationship $w->save($p); 이렇게 하면 kaden과 우리집 마당의 relationship이 이루어집니다. 물론 조인테이블이 하나 더 있거나 user나 workplace 테이블에 workplace_id 또는 user_id 필드가 있어야 겠지요 이부분은 나중에 다른 강좌에서 깊게 파고 들겠습니다. 이제 kaden이 어디서 일하는지 봅시다. // call kaden $w = new Worker(); $w->get_by_name('kaden'); // call related workplace $w->workplace->get(); echo $w->workplace->location; // '우리집 마당' 참 쉽죠잉 이처럼 woker만 부르면 worker에 related 된 다른 테이블의 값을 쉽게 가져와서 다룰수있습니다. 맛보기로 여기까지 하구요. 다음 강좌에는 다시 기초로 돌아가서 설정법, db규칙, 검증부터 하나씩 파고 들겠습니다 위 예제는 이미 DMZ사이트에 있는 내용이므로 더 궁금 하신분은 DMZ 사이트 가시면 자세히 나와있습니다 |
|||
태그 | orm,DMZ,강좌 | ||
다음글 | CI로 20분 만에 블로그 만들기(정식) (37) | ||
이전글 | CI 로 20분만에 blog 만들기 리허설 버전 (15) | ||
변종원(웅파)
/
2009/08/23 21:47:02 /
추천
0
흠.. get_by_{필드명}(); 직관적이네요. ^^
|
emc
/
2009/08/28 00:06:40 /
추천
0
저는 그냥 sql문이 더 가독성이 있어서, 아직 orm은 아직 익숙하지 않네요.
ci의 active record 사용하는 것도 아직 버겁구요. |
최용운
/
2009/09/01 21:00:28 /
추천
0
좋은 내용입니다. 좀더 자세히 살펴볼 필요가 있겠네요 .
|