Spring и В спящем режиме, действительно предназначаются, чтобы сделать две разных вещи. Spring является прежде всего контейнером инверсии управления и подсистемой конфигурации, в то время как В спящем режиме, привязка базы данных и ленивый механизм загрузки. Если Вы не хотите вводить набор нового материала в Ваш код, палку с Spring и запросами самокрутки или использованием iBatis, чтобы сделать намного более простую привязку базы данных.
Вы не хотите использовать ROWID
в качестве первичного ключа, потому что не гарантируется его стабильность в течение всего времени существования строки.
Лучше всего добавить синтетический ключ. Используйте триггер, чтобы заполнить столбец значением последовательности.
Вы немного расплывчаты в отношении аспекта наследия, поэтому трудно сказать, каковы будут последствия. Добавление столбца приведет к поломке любого оператора вставки, в котором явно не указаны целевые столбцы. Он также может нарушить любые запросы SELECT *
(если они не выбраны в переменную, объявленную с использованием ключевого слова % ROWTYPE
]. Но вам не нужно будет изменять какое-либо другое приложение, поэтому оно будет первичный ключ вместо существующих столбцов - если вы действительно этого не хотите.
Я бы добавил суррогатный ключ с поддерживающей последовательностью. Это не изменит никакой вашей устаревшей семантики, и Hibernate будет удовлетворен.
Просто любопытно - если в индексе есть имя, фамилия и дата найма, почему ваш составной ключ исключает дату найма? Я ожидал увидеть все поля индекса в составном ключе.