spring-data-mongodb 대상 관련 @DBRef 학습 의문점
예를 들어, 관계식 솔리드는 다음과 같습니다.
Student( )
@Document(collection="student")
public class Student {
@Id
private String studentId;
@Indexed(unique=true)
private String studentName;
private int age;
@DBRef
private List courses;
//setter,getter
}
Course
@Document(collection="course")
public class Course {
@Id
private String courseId;
@Indexed(unique=true)
private String courseName;
//setter,getter
}
새 Student 대상을 만들고 두 과목을 Student 대상에게 값을 부여합니다. (주: 이 두 과목은 데이터베이스에 없습니다.) 그리고 데이터베이스에 저장합니다.
List courses = new ArrayList();
Course math = new Course();
Course english = new Course();
math.setCourseId("c01");
math.setCourseName("math");
english.setCourseId("c02");
english.setCourseName("english");
courses.add(english);
courses.add(math);
Student s = new Student();
s.setAge(21);
s.setCourses(courses);
s.setStudentId("2009011");
s.setStudentName("lklk");
studentService.addStudent(s);
논리적으로 만약에 데이터베이스에 이 두 과정이 존재하지 않는다면 관련을 맺었기 때문에 Student 대상을 저장할 때 오류를 보고해야 하는데 왜 저장에 성공할 수 있는지.저장된 데이터는 다음과 같습니다.
{
"_id" : "2009011",
"_class" : "cn.com.coolcao.springmongo.entity.Student",
"studentName" : "lklk",
"age" : 21,
"courses" : [
{
"$ref" : "course",
"$id" : "c02"
},
{
"$ref" : "course",
"$id" : "c01"
}
]
}
이렇게 하면 @DBRef가 성공적으로 연결되었음을 알 수 있습니다.그러나course라는 컬렉션에는 c02,c01이라는 두 과목이 없다. 이렇게 하는 의미는 무엇입니까?(course 집합은 아직 비어 있으며 데이터가 없습니다.)
관련 대상 간의 저장, 삭제 등 작업을 했고spring-data-mongodb는 검사를 하지 않고 바로 저장했습니다. 삭제한 부분은 의미가 무엇인지 잘 모르겠습니다.이렇게 삽입된 문서와 실질적인 차이는 어디에 있습니까?
질의 정보:
만약 연관이 있다면 조회할 때 어떤 모습일까요?
다음은 컬렉션에 세 가지 데이터를 삽입합니다.
/* 0 */
{
"_id" : "c01",
"_class" : "cn.com.coolcao.springmongo.entity.Course",
"courseName" : "math"
}
/* 1 */
{
"_id" : "c02",
"_class" : "cn.com.coolcao.springmongo.entity.Course",
"courseName" : "english"
}
/* 2 */
{
"_id" : "c03",
"_class" : "cn.com.coolcao.springmongo.entity.Course",
"courseName" : "chinese"
}
그런 다음 Student 질의 작업을 수행합니다.
String id = "2009011";
Student s = studentService.queryById(id);
질의의 결과는 다음과 같습니다.
Student [studentId=2009011, studentName=lklk,age=21, courses=[ Course [courseId=c02, courseName=english], Course[courseId=c01, courseName=math]]]
즉, 이때 조회할 때spring-data-mongodb는 관련된Course 실체도 조회하는 것이 이상적인 결과라는 것이다.
내가 제시한 첫 번째 점에 대해 @DBRef 주석을 사용하여 대상 관련을 한 후에 삽입, 삭제 작업을 할 때 대상 간의 관련 관계를 검사하지 않고 바로 조작했다. 이 문제를 어떻게 해결해야 하는가.몬godb를 잘 아는 친구가 설명해 주세요. 동생이 몬godb를 처음 배우기 시작했으니 여러분의 아낌없는 가르침을 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.