Я использую JPA 2.0 с hibernate в качестве jpa-провайдера. Направление для моего проекта - сохранить JPA DAO - реализация нейтральной. Таким образом, я не могу использовать объект сеанса гибернации или что-либо, что является специфическим для гибернации. У нас достаточно большое количество поисков, и эти значения поиска должны быть периодическими, поскольку я имею в виду, что они в основном остаются постоянными для примера периода, скажем, у нас есть таблица поиска валюты
Currency code --> Drachma
Description --> Greece
From date --> 01-Jan-1960
To date --> 01-Nov-2005 (this is just an example)
Currency code --> Euro
Description --> Greece
From date --> 02-Nov-2005
To date --> null (null indicates until today)
Я разработал базовый класс поиска, который выглядит так для всех поисков
@MappedSuperclass
public abstract class BaseLookupEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "code", nullable = false)
private String code;
@Column(name = "description", nullable = false)
private String description;
@Column(name = "from_date", nullable = false)
@Temporal(TemporalType.DATE)
private Date fromDate;
@Column(name = "to_date")
@Temporal(TemporalType.DATE)
private Date toDate;
// getters and setters
Дилемма
Учитывая, что сервисный уровень получает новые экземпляры от клиента без поля идентификатора, для каждого Создания или Обновления объекта, который содержит n номеров таких периодических кодов поиска, нужно ли явно запрашивать все эти таблицы поиска, чтобы увидеть если эти значения существуют, и если они существуют и требуют обновления, обновите столбец to_date, а затем создайте новую запись поиска.
Нужно ли делать эту логику самоделки или в JPA есть механизм, который я мог бы использовать, чтобы минимизировать усилия?
Приветствие.