В настоящее время я работаю над проектом, который использует EF Code First с POCO. У меня есть 5 POCO, которые пока зависят от POCO «User».
POCO «User» должен ссылаться на мою уже существующую таблицу MemberShip «aspnet_Users» (которую я отображаю в методе OnModelCreating контекста DbContext).
Проблема в том, что я хочу воспользоваться функцией " - лучший способ читать UDT из базы данных с помощью Java? Я думал, что знаю все о UDT и JDBC, пока кто-то из SO не указал некоторые детали Javadoc java.sql.SQLInput и java.sql.SQLData JavaDoc мне. Суть этой подсказки была (от ...
Я думал, что знаю все о UDT и JDBC, пока кто-то из SO не указал некоторые детали Javadoc java.sql.SQLInput и java.sql.SQLData JavaDoc для меня. Суть этой подсказки была (из SQLInput):
Входной поток, содержащий поток
Мне казалось, что я знаю все о UDT и JDBC, пока кто-то из SO не указал на некоторые детали Javadoc java.sql.SQLInput и java.sql.SQLData JavaDoc мне. Суть этой подсказки была (из SQLInput):
Входной поток, содержащий поток
Мне казалось, что я знаю все о UDT и JDBC, пока кто-то из SO не указал некоторые подробности документации Javadoc java.sql.SQLInput и java.sql.SQLData JavaDoc мне. Суть этой подсказки была (из SQLInput):
Входной поток, содержащий поток значений, представляющих экземпляр структурированный тип SQL или SQL особый тип. Этот интерфейс, используемый только для настраиваемого сопоставления, используется водитель за кадром, и программист никогда не вызывает напрямую Методы SQLInput.
Это полная противоположность тому, что я привык делать (что также используется и стабильно в продуктивных системах при использовании с драйвером Oracle JDBC): реализовать
SQLData
и предоставить эту реализацию в настраиваемом сопоставлении сResultSet.getObject(int index, Map mapping)
Драйвер JDBC затем обратится к моему настраиваемому типу, используя метод
SQLData.readSQL(SQLInput stream, String typeName)
. Я реализую этот метод и читаю каждое поле из потока
SQLInput
. В конце концов,getObject ()
вернет правильно инициализированный экземпляр моей реализацииSQLData
, содержащий все данные из UDT.Мне это кажется идеальным способом реализации такое нестандартное отображение. Веские причины для этого:
- Я могу использовать стандартный API вместо использования классов, зависящих от поставщика, таких как
oracle.sql.STRUCT
и т. Д.- Я могу сгенерировать исходный код из своих UDT с соответствующими геттерами / сеттерами и другими свойствами
Мои вопросы :
- Что вы думаете о моем подходе к реализации
SQLData
? Насколько это жизнеспособно, даже если в документации Javadoc указано иное?- Какие еще способы чтения UDT в Java вам известны? Например, что делает Spring? что делает Hibernate? Что делает JPA? Чем вы занимаетесь?
Приложение :
Поддержка UDT и интеграция с хранимыми процедурами - одна из основных функций jOOQ . jOOQ стремится скрыть более сложные «факты JDBC» от клиентского кода, не скрывая при этом основную архитектуру базы данных. Если у вас есть вопросы, подобные приведенным выше, jOOQ может дать вам ответ.