2011-09-12 6 views
3

SQL 백엔드를 사용하는 JPA에서는 내장 테이블이 자동으로 업데이트됩니다. NoSQL (MongoDB)에 동일한 메커니즘을 제공합니까?
테이블 :
여기 내가 달성하기 위해 노력하고 무엇의 예입니다 학생을
MongoDB 임베디드 문서


학생의 자세한 사항
(다른 코스 테이블에서) @OneToMany
코스 세부

JPA와 SQL에서 Course Details 테이블을 업데이트하면 변경 사항이 반영됩니다 그것을 말하는 모든 학생들에 걸쳐 cted.

MongoDB에서 조인을 사용하는 대신 문서가 내부에 포함됩니다. MongoDB에서이 문제를 어떻게 해결할 수 있습니까?

덕분에, 샘

답변

2

간단히 말해서, 아니오. 사과와 오렌지의 질문이기도합니다. MongoDB는 가장 느슨한 의미의 SQL 대체 언어입니다. 두 데이터베이스 다. JPA는 1 : N 및 N : M 관계를 일관되게 유지하는 것과 같은 작업을 수행 할 수있는 ORM 계층입니다. 현재 JPA 나 그와 비슷한 것을 구현하는 MongoDB ORM 계층은 없습니다.

즉, mongo와 같은 NoSQL 데이터베이스 컨텍스트 내에서 스키마가 올바르지 않습니다. 재사용되는 콘텐츠가 포함 된 문서를 포함하지 않아야합니다. 대부분의 경우 예외적으로 데이터 복제의 정규화와 성능을 희생하는 성능 최적화가 포함됩니다.

이 경우 별도의 강좌 세부 정보 모음을 원하며 학생 강좌에 해당 강좌 세부 정보의 _id 값 배열을 저장하십시오. 그렇게하면 코스 세부 정보 문서의 돌연변이를 추적하지 않고이 콜렉션을 개별적으로 수정할 수 있습니다.

DBRefs 참고 자료를 사용하지 마십시오. DBRef는 알려진 유형의 문서에 대한 ID 참조를위한 적절한 도구가 아닙니다. 대신에 간단한 _id 참조를 사용하십시오.

그래서, TL; DR 버전 : 별도의 컬렉션

  • 넣고 코스 세부 문서
  • 삽입 학생의 코스 내용 문서에 _id 년대의 배열

예 :

+0

나는 (1) "제안 된대로"단어를 제거하고 (2) "데이터베이스 참조 "와"DBRefs ". 이것은 당신의 대답이 더 도움이 될 것입니다. 혼란을 피하기 위해 이전 코멘트를 삭제했습니다. – jtoberon

+0

의견을 보내 주셔서 감사합니다. –

+0

이 방법이 제 신청에 완벽하다는 것을 알았습니다. 도와 주셔서 감사합니다! –

0

는 대신 포함 된 문서의 reference를 사용할 수 있습니다. 그런 다음 교육 과정 데이터 사본이 하나뿐이므로 모든 학생은 정의에 따라 동일한 정보를 참조해야합니다.

관련 문제