Недавно я получил последнюю версию Hibernate и заметил, что мои UserTypes теперь имеют предупреждения о методах nullSafeGet (ResultSet, String) и nullSafeSet (PreparedStatement, T, int) в AbstractStandardBasicType, которые устарели в пользу их соответствующих методы, которые принимают аргумент SessionImplementor. Проблема в том, что при реализации UserType SessionImplementor не передается вам так, как это делается в BasicType, CompositeUserType и т. Д.
Я проверил руководство Hibernate, чтобы увидеть, был ли обновленный пример. Их пример UserType использует get / set вместо nullSafeGet / nullSafeSet, но эти методы также устарели в пользу версий, которые принимают SessionImplementor. Таким образом, кажется, что даже официальный пример UserType Hibernate использует устаревшие методы, что заставляет меня задуматься о двух вещах:
- Есть ли хороший способ получить SessionImplementor из UserType?
- Если нецелесообразно получать SessionImplementor из UserType, и я не хочу писать свой собственный nullSafeGet / nullSafeSet, должен ли я отказаться от UserType в пользу одной из его альтернатив? Каковы практические различия между UserType и, например, BasicType?