2011-07-03 2 views
15

는 내가 사용 사례, 및 Liftweb 응용 프로그램에서 Record, Mapper 또는 모두를 사용하는 선택의 불편을 장점이 무엇인지 이해하고 싶습니다. 모델 클래스에 대한 구조와 같은 트리를 생성리프트에 매퍼 또는 레코드를 사용하는 경우는?

  • 페이지의 클래스의 렌더링을위한 구조와 같은 유사한 트리를 생성
  • 다른 확인 : 내가하려고 할 때

    이 질문은 등장 트리의 클래스는 동시에 다른 상태에있을 수 있습니다. 하나는 EDIT 또는 CREATE 상태이고 다른 하나는 예를 들어 VISUALIZE 상태입니다.

  • 모델 클래스는 이미 작동중인 RESTful 웹 서비스에 작성, 읽기 또는 저장 될 수 있습니다.

여기에 레코드 용으로 사용 사례가 들어 있습니다. 좀 더 일반적인 방법으로 대답 할 수 있습니다.

+0

방금 ​​알아 본 점이 [this] (http://groups.google.com/group/liftweb/browse_thread/thread/afc784c7c29b346c/0ca6b2e5e39facc7?lnk=gst&q=mapper+3+years#0ca6b2e5e39facc7) 스레드에서 발견되었습니다. 매퍼 (Mapper)와 레코드 (Record)에 관해서는 레코드가 갈 길이 란 것을 명시합니다. 그럼에도 불구하고 매퍼 (mapper)는 훨씬 더 문서화가되어 적어도 3 년 이상 지원 될 것입니다. –

+0

Mapper 스택이 Record 스택보다 더 완벽하다고 보았습니까? Anyone은 두 가지 경험을 가지고 있으며 그에 대해 조금 이야기 할 수 있습니까? –

+4

Tim은 100 % * WRONG *이며 잘못된 정보가 퍼져서는 안됩니다. 기록은 Mapper 대신 * NOT *입니다. 각각은 자체 포커스 (Mapper/JDBC Record/generic persistence)를 가지고 있습니다. –

답변

16

Mapper는 Lift가 Lift가되기 전에 Lift의 일부였습니다. 데이터베이스와 스칼라 사이의 간단한 "액티브 레코드"스타일 브릿지입니다. 여기에 설명 된 아이디어를 기반으로 Mapper를 만들었습니다. http://web.archive.org/web/20070303054927/http://blog.lostlake.org/index.php?/archives/19-Keeping-the-meaning-with-the-bytes.html

Mapper는 JDBC 및 관계형 데이터베이스와 밀접하게 연결되어 있습니다. Mapper는 간단한 쿼리를 작성하기위한 합리적인 메커니즘을 가지고 있지만 복잡한 물건의 경우 SQL을 직접 작성해야합니다.

매퍼는 견고하지만 견고합니다.

레코드는 저장소와 스칼라 간의보다 일반적인 추상화입니다. 그것은 "Bytes와의 의미를 지키기"에서 개략적으로 설명 된 아이디어의 구현이 약하고 아주 소수의 사람들이주의를 돌리고 관심을 보입니다.

MongoDB, CouchDB, Squeryl 및 기타 저장 메커니즘에 대한 레코드 구현이 있습니다. 새로운 백엔드를 작성하는 것은 며칠입니다.

레코드에는 많은 "이상"이 있고 각 백엔드에는 고유 한 단점이 있습니다. 현재 레코드 소유자는 레코드의 도매 리팩토링을 시작했습니다.

MongoDB 백엔드를 사용하지 않는 한 Record 또는 Mapper가 "즉시 사용 가능한"트리 구조를 제공하지 않을 것이라고 생각합니다.이 경우 트리 구조는 관계가 아닌 JSON 문서를 기반으로합니다 .

+0

이것은 내가 찾고 있던 것 이상이었다. 감사. 참고로 내 "지속성"은 RESTful 서비스 뒤에 있습니다. 그래서, 나는 그 RESTful 서비스에로드/저장하는 Record 클래스를 구현할 것이다. 여러분이 말한 것을 생각해 보면 아마도 MongoDB를보고 거기에서 어떻게 이루어 졌는지를보고 내 코드를 느슨하게 작성할 수있을 것입니다. :) –

+1

"바이트와 함께 의미를 유지하는"링크는 좋은 읽을 거리입니다. –

2

음, Mapper와 Record 라이브러리는 Lift 응용 프로그램에서 데이터베이스 액세스에 대한 다른 추상화에만 해당됩니다. 기록은 최신 기록이며 매퍼를 언젠가 대체 한 것으로 간주됩니다. 현재 Record는 CouchDB 및 MongoDB와 같은 NoSQL 데이터베이스를 지원합니다. 데이터 모델이 NoSQL 세계에 적합한 경우 레코드를 시도하십시오. 그렇지 않으면 Mapper를 일반적인 관계형 데이터베이스와 관련하여 사용할 수 있습니다.

나는 재미있는 점을 언급했다.

+0

레코드는 또한 Squeryl 관계형 접근법을 지원합니다. – Etam

+0

실제로 그렇습니다. 알아 둘만한. 그러나 질문자에게 중요합니다 : Squeryl은 Record의 최상위에있는 또 다른 ORM 프레임 워크입니다. 따라서 두 개의 API를 배워야합니다. 그러나 imho Squeryl은 Scala에서 사용할 수있는 최상의 데이터베이스 추상화 중 하나입니다. – Felix

+3

레코드가 매퍼를 대신하지 않습니다. –

관련 문제