관리 메뉴

nkdk의 세상

Lift 모델을 정의해 봅시다. 본문

My Programing/ETC

Lift 모델을 정의해 봅시다.

nkdk 2010. 6. 13. 01:53
이번 주는 모델을 정의해 볼려고 합니다.

일단 저번화에서 받은 pocketchangeapp 를 가지고 설명하려 합니다.

그리고 제가 원래는 맥에서 작업하다가 윈도우7으로 작업을 시작했는데요.

일단 http://git-scm.com/download 여기 가셔서 git을 받으시고요.
클라이언트는 tortoiseGit이 괜찮네요 ^^

자 일단 pocketchange.app에 소스를 받으셨나요? 이걸 간단히 보면
로그인 시스템부터 가입, 비번찾기 등등의 기능이 있습니다. 하나 하나 봐보죠.

자 그럼 시작!

대충 모양을 보면 정말 기본적으로 사용하는 회원가입, 로그인, 비번찾기 등등의 것들이 포함되어 있는 샘플소스입니다.

그렇다면 대충 데이타베이스 엔티티에 관련된 정의에 대해서도 나올 것 같은 기분이 생기면서 시작합니다.

src/main/scala/com/pocketchangeapp/model/User.scala 소스를 봅시다.

이 부분에서는 megaProtoUser라는 개념이 나오는데요. 이건 보통 user를 관리 할때 필요한 것이라고 하네요.

각 액션에 따른 모델들이 구분되어 있는 것 같은데요. 그거 인지는 한번 보면서 하면 좋을 듯 하네요.
나올 수 있는 관련 펑션들(사인업, 패스워드찾기, 로그인)에 관련된 것을 포함시키게 한다고 하네요.
이 내용은 User.siteMap에서 싱글콜이 SiteMap 메뉴에 제너레이트 된다고 하는데요. 이건 좀 봅시다. 아직 전체적인 모양이 안 보이네요.

전체적 내용을 보면 Object가 내부에 있는 User클래스를 상속 받는데.. O-R맵을 하는 것 같은 형태인거 같습니다.

이 부분에 대해서는 다음에 더 자세하게 봅시다.

자 다음으로는 Account.scala 라는 걸 정의 할 수도 있네요. 여기서는 간단히 필드들만 봐 볼까요?

이 부분들을 봐 보면 User부분을 부르는 부분부터 해서 간단히 여럿 오브젝트를 불러서 쓸 수 있게 등록을 해 놓는 것 같습니다.

역시나 중요한 내용을 보면 Account findByName object인데 이 내부에 class Account를 불러서 사용 한다는 내용이 마음에 드네요. 
이 내용은 좀 더 봐 두면 좋을 것 같네요. ^^

주요 내용
class Account extends LongKeyedMapper[Account] with IdPK {
  def getSingleton = Account
...

object Account extends Account with LongKeyedMetaMapper[Account] {
  def findByName (owner : User, name : String) : List[Account] =
    Account.findAll(By(Account.owner, owner.id.is), By(Account.name, name))
}

...


등등이 되겠네요. ^^; 다음 시간에는 template관련 부분에 대해서 한번 훑어 봅시다.