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