Я использую Spring JDBC для приложения, над которым я работаю, и перед вами стоит проблема. В моем доменном слое у меня есть поля; примитивных типов и ассоциаций объектов. Если лицо принадлежит к муниципалитету, у меня есть:Spring JDBC один к одному отношения
public class Person {
private Municipality municipality;
// More code
}
public class Municipality {
// More code
}
В базе данных вы моделируете это с помощью первичных + внешних ключей. Таблица лиц в этом случае имеет внешний ключ для первичного ключа таблицы муниципалитета. Я создал репозиторий для Лица и Муниципалитета. Теперь я хочу получить Человека, но я также хочу подключить к нему муниципалитет одновременно.
Первое, что я делаю, это найти человека, использующего репозиторий Person. Затем я хочу найти муниципалитет, который принадлежит Личности. Однако на данный момент у меня нет внешних ключей, смоделированных в моих объектах домена. Это означает, что у меня нет поля private int municipality_id
в классе Person. Это приведет к тому, что объекты домена будут связаны с базами данных (по крайней мере, сейчас об этом).
Выдача другого запроса, чтобы найти муниципалитет_ид, считается некорректным. Как я могу решить эту проблему? Однако мне нужен муниципалитет, чтобы найти муниципалитет.
Добавить в муниципалитетId в модель или использовать ORM (JPA, Hibernate и т. Д.). Примечание: модель представляет данные, поступающие из базы данных. В чем проблема наличия поля для внешнего ключа? –
Не означает ли это, что доменный уровень «знает» о том, что я использую базу данных для сохранения? Я имею в виду, почему у вас в противном случае был бы внешний ключ в модели? Или это окей? – LuckyLuke
@ LuckyLuke. Все, что знает доменный домен, это то, что вы можете идентифицировать объекты других типов с уникальным номером, который позволяет вам извлекать их позже из * некоторого * постоянного хранилища. К сожалению, я совсем не уверен, как сделать классы домена незнакомыми с тем, чтобы быть устойчивыми вообще. – millimoose