Я пытаюсь понять микросервисы.Я хотел бы знать, как решить проблему отношения один ко многим / многим ко многим в архитектуре микросервисов и какова лучшая практика.Предположим, что я хочу преобразовать приложение студенческого курса в студенческие разговоры и разговоры о студенческом общении со столом ученика и разговором о курсе обслуживания в одной базе данных.
Пример: студенты могут записаться на многие курсы, а также на многиеКурсы могут иметь много студентов (отношения многие ко многим).У меня есть 2 микросервиса Микросервисы 1: Студенческий сервис Микросервисы 2: Курс-сервис
Студент Сервис имеет студенческий объект
@Entity
@Table(name = "STUDENT")
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(name = "NAME")
private String name;
//@ManyToMany(fetch = FetchType.LAZY)
//@JoinTable(name = "STUDENT_COURSE", joinColumns = @JoinColumn(name = //"STUDENT_ID"), inverseJoinColumns = @JoinColumn(name = "COURSE_ID"))
// private List<Course> courses = new ArrayList<Course>();
}
Курс Сервис имеет объект курса
@Entity
@Table(name = "COURSE")
public class Course {
@Id
@Column(name = "ID")
private long id;
@Column(name = "COURSE_NAME")
private String name;
//@ManyToMany(mappedBy = "courses", fetch = FetchType.LAZY)
//private List<Student> students = new ArrayList<Student>();
}
Я понимаю, что студенческие службы должны звонить в службу курсов, чтобы получить курсы, но как мне назначить курс студенту (например, студент А записался на курсы X, Y, Z)
- Как получить список курсов для студента или список студентов для курса?
- Нужно ли мне дублировать Курс Класс в Студенческое обслуживание и Студент Класс в Курс Сервис ?
- Нужно ли перемещать классы домена в общий проект, а затем делиться между микросервисами, чтобы избежать дублирования?
Не могли бы вы мне помочь, ответив на передовой опыт решения многих для многихпроблема взаимоотношений в микросервисе?