Я ищу лучшее решение для хранения глобальных данных приложения Java EE с использованием Hibernate. Он будет состоять из пар ключ-значение. Пример:
projectStarted = "10-11-11"
developerNumber = 3
teamLeader = "John"
Как видите, все эти записи имеют разные типы.
Пока я вижу два варианта:
1) Создать объект GlobalData. Каждое его поле будет представлено как уникальный столбец в таблице и будет содержать уникальный параметр. Таким образом, у меня нет проблем с приведением типов, но я бы хотел избежать этого в случае большого количества настроек.
2) Создание объекта настройки. Каждое из них будет содержать два поля: ключ (первичный ключ) и значение и будет представлено как уникальная запись в таблице. Это предпочтительное решение, но мне кажется, что я получу много приведения типов, потому что настройки могут быть любого типа.
Так что, в принципе, я ищу способ реализации второго решения, не получая много неприятностей от разных типов. Кто-нибудь может мне помочь?
Спасибо.
Редактировать 1.
Да, спасибо, Кристиан. Просто получил похожую идею.
Что если у меня будет сущность Настройки, которая будет выглядеть так:
@Entity
@Table(name = "settings")
public class Setting {
@Column
private String key;
@Column
private String value;
@Column
private String converterClassFullName; //example by.lugovsky.MyConverter
//Getters, setters
}
И класс GlobalData.
public class GlobalData {
private Date projectStarted;
private int developerNumber;
private String teamLeader;
Set<Setting> settings;
//Getters and setters for all, except settings.
}
Таким образом, в основном моя идея состоит в том, чтобы преобразовать сущность Setting перед сохранением / обновлением / и т. Д. Я могу сделать это в своем DAO, но мне было интересно, смогу ли я также аннотировать класс GlobalData аннотацией @Entity без создания новой таблицы. Таким образом, я могу установить для аннотации OneToMany значение Set set и выполнить преобразования во внутренних методах @PrePersist и т. Д.
Позволит ли мне Hibernate это сделать?
Еще раз спасибо