2012-04-25 1 views
1

나는 MVC에서 리프트의 장점을 보여주기 위해 개념 증명 작업을하고 있으므로 기존 데이터베이스와 liftweb를 통합하는 작업을하고 있습니다.기존 데이터베이스와 liftweb를 통합하기 위해 megaprotouser 또는 metaprotouser를 복사하거나 확장 할 것인지 여부

내가 할 수있는 것을 재사용하고 싶지만 사용자 개체를 수정해야합니다. 동작이 변경되고 일부 특성을 추가 및 제거해야합니다.

메가 또는 메타 프로토 사용자를 확장하거나 클래스를 복사하고 새 이름으로 수정 한 다음 프로젝트에서 사용하십시오.

수정 한 경우 동작을 변경하기위한 새로운 특성을 추가 할 수 있지만 전자 메일이 사용되지 않아 로그인에 사용 된 것을 변경해야합니다.

자바에서는 이것을 수행하기 위해 애스펙트 (aspect) (AOP)를 사용할 수 있었고 스칼라에서도 비슷한 방법이 있다고 생각하지만 확실하지 않습니다.

MSSQL과 통합되므로이 통합을 위해 레코드 대신 매퍼를 사용하는 것이 가장 좋을 것으로 기대합니다.

답변

4

스칼라는 JVM에서 실행되므로 AOP 기술이 여전히 작동합니다. 그러나 대부분의 사람들이 알기로 스칼라의 언어 기능은 일반적으로 AOP보다 목표를 달성하기위한보다 단순하고 단순한 방법을 제공합니다.

간단히 MegaProtoUser/MetaMegaProtoUser을 확장하고 변경하려는 메서드를 재정 의하여 원하는 결과를 달성 할 수 있습니다. 예를 들어 def findUserByUserName(username: String)을 무시하면 이메일 주소 대신 사용자 이름으로 검색 할 수 있습니다. proto 클래스는 이러한 종류의 사용자 정의를 위해 설계되었습니다.

전체를 복사/붙여 넣기를 원하는만큼 많이 변경하고 싶다면 사용자 클래스를 직접 작성하거나 필요에 맞는 것을 사용하는 것이 좋습니다. proto 클래스에 관해서는 마법 같은 것이 없습니다. 그들은 단순히 당신에게 출발점을 제공하기 위해 거기에 있습니다. 또한, 생산 코드에서 나쁜 형태가 될 수있는 일들이 있습니다 (즉, 모델 코드에 HTML 넣기).

Tim Perret

Lift in Action에 최선을 말했다 :

프로토 시리즈의 특성이 아닌 종료 솔루션 출발점이다. 여러면에서 Rails의 비계와 유사합니다. 즉, 의 생산성을 단기간에 높일 수 있지만 장기적으로는 이상으로 성장하여 점차적으로 애플리케이션에서 제외시킵니다 ( ). 코드 또는 일부 플러그인 또는 라이브러리의 코드를 사용하십시오. 팀 및 플러그인의 말하기

, 그는 Apache Shiro와 리프트를 통합 lift-shiro을 썼다. 체크 아웃 할 가치가있을 수도 있습니다.

+0

이것은 단지 개념 증명 일 뿐이므로 재사용 할 수있는 모든 것은 훌륭하지만, 필요에 따라 작동 시키려면 얼마만큼 작업 할 수 있는지 보려고 할 수도 있습니다. 이미 존재하는 데이터 스키마에 매핑하고 원시 SQL을 매핑에 사용하면됩니다. –

+0

이미 사용자를 나타내는 스키마가 있음을 알 수 없었습니다. 'MappedPassword'가 암호를 저장할 때와 같은 방식으로 암호를 저장하지 않는 이상 더 큰 문제가있을 수 있습니다. 어쩌면'mapper.ProtoUser'를 복사하고 그것을 당신의 의지로 굽는 것이 가장 좋을 것입니다. – leedm777

+0

그게 내가 암호를 문제로 될 생각입니다. 나는 카피 및 벤드 접근에 대해 강력하게 기대고있다. –