Bucket Place/Ruby on Rails

[Ruby on Rails] Rails ORM Library & Action Pack

Cloud Travel 2014. 4. 28. 19:30


  들어가면서... 

 

 Rails는 MVC 패턴에 의거하여 움직인다. MVC에 대한 개념은 이 블러그에서 MVC를 검색할 경우 짧지만 설명이 잘 되있는 부분을 발견할 수 있다. 하지만, Rails에 맞는 MVC 아키텍쳐 그림이 아니기 때문에 여기서 그림만 다시 보여주도록 하겠다.

 

 

 Rails에서는 MVC모델을 지원하기 위해서 다양한 요소를 제공해주는데 ORM Library와 Action Pack이 바로 그것이다.



  ORM Library 


 관계형 데이터베이스에 있는 것을 클래스로 맵핑하는 라이브러리이다. 이는 다른 플랫폼(Android)에서도 많이 사용해 보았을 것이다. 다른 플랫폼들과 다르게 레일즈는 테이블을 보고 자동으로 클래스를 생성해준다. 또한, 이 클래스들은 데이터를 다루기 위한 다양한 함수를 제공해준다.


 예전에 Android SQLite에서 설명하기 위해 생성한 간단한 테이블을 이용하여  ORM Library 에 대해서 설명하겠다.

 

Friend라는 테이블에 의해 Friend라는 클래스가 자동으로 생성될 것이다. 각각 한명한명의 Friend정보는 각각의 객체에 저장이 될 것이다. 위에서 말했듯이 ORM Library 에 의해 생성된 클래스는 다양한 함수도 제공해준다. Friend 클래스도 이에 따라 인덱스 이동 및 값을 set하고 get하는 방법을 제공해준다.

 

 예를 들어 Friend의 name이 KIM인 사람의 정보를 얻어서 출력하고 싶다면 다음과 같이 정의해주면 된다.

 Friend.where(name:'KIM'). each do |friend|

puts friend.phone

puts friend.email

end

 이는 "select * from Friend where name='KIM'"과 같은 행동을 할 것이다. 여기서 가져온 데이터의 원하는 정보를 출력해 주는 역할을 한다.


 또 다른 예시로 정보를 바꾸는 것을 보여주겠다.

Friend.where(name:'LEE').each do |friend|

friend.phone = "010-1234-5678"

friend.save

end

 이는 데이터를 변경해주는 역할을 한다. SQL구문이 정확히 생각나지 않는다. 여기서 주목해야할점은 변경되거나 새로운 데이터가 있다면  .save 를 호출하여서 데이터를 저장하는 것이다.


 ORM 계층으로  Activity Record 가 함께 제공된다. 이 것에 대해서는 아직 정확히 모르겠지만, 데이터베이스 모델의 실체가 Activity Record라고 한다. 나중에 공부하다 보면 알게될 것이라 믿고, 메모장에 적어 놓았다.



  Action Pack 


 Controller 생성시 함께 View가 생성되는 것을 볼 수 있는데 이는 뷰와 컨트롤러가 하나로 묶여서 제공하는  Action Pack 때문이다. Action Pack은 하나지만 각각 View와 Controller는 완전히 분리된 개념이다.

 

 View는 HTML 소스코드로 컨트롤러에서 생성 또는 정제한 데이터를 가져와 사용한다.


 Controller는 MVC의 핵심으로 맨 위 그림에서 보듯이 모든 Actor들과 통신을 한다.

 

 View와 Controller가 혼용되서 어지러운 상태에 되는 것을 방지해주고 Contoller와 연결된 다양한 관계들을 보이지 않게 처리해주는 것이 Action Pack의 기능이다.



  마치며... 


 먼가 공부를 할 수록 궁금한게 많아지는 시점이다. 첫부분이기 때문일까...?

 먼가 더 공부하면 이 어두운 부분들이 밝아지지 않을까 생각해본다.