Абстрагирование первичных ключей модели с использованием данных Spring

#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.