#java #spring
Вопрос:
Я рассматриваю spring data как решение DAO, в первую очередь потому, что я сталкивался с препятствиями, делая что-то нестандартное.
Однако одна вещь, которая бросается мне в глаза, заключается в том, что они жестко кодируют тип поля первичного ключа в своих примерах «модели».
class Person {
private final @Id Long id;
...
}
Как это абстрагирует данные, когда тип первичного ключа зависит от хранилища? Long
подходит для баз данных SQL/автоматического увеличения, но не подходит для MongoDB.
В своем примере MongoDB они создают совершенно новый Person
класс со строковым идентификатором:
public class Person {
private String id;
}
Одна из моих основных причин, по которой я рассматривал spring-data как решение DAO, заключалась в том, чтобы найти лучший способ обработки моделей.
Прав ли я в том, что они ожидают, что каждая реализация хранилища будет воссоздавать модели? Я могу переместить общий код в более высокий класс, но все же я надеялся избежать дублирования.
Комментарии:
1. Да, это то, что я связал с примером монго. Но мне нужно, чтобы это было абстрактно. Этот
Person
класс также должен быть полезен для MySQL и т. Д. Я не могу использоватьLong
для Mongo, и я не могу использоватьString
для MySQL.