Я начал приложение с Hibernate 3.2 и PostgreSQL 8.4. У меня есть несколько полей byte[]
, которые были отображены как @Basic
(= PG bytea) и другие, которые были отображены как @Lob
(= PG Large Object). Почему непоследовательность? Потому что я был Hibernate noob.
Теперь эти поля максимальны 4 Кб (но в среднем 2-3 кб). В документации PostgreSQL упоминалось, что LO хороши, когда поля большие, но я не видел, что означает "большой".
Я обновился до PostgreSQL 9.0 с Hibernate 3.6, и я застрял, чтобы изменить аннотацию на @Type(type="org.hibernate.type.PrimitiveByteArrayBlobType")
. Эта ошибка привела к потенциальной проблеме совместимости, и в итоге я обнаружил, что большие объекты - это боль, с которой приходится иметь дело, по сравнению с обычным полем.
Итак, я думаю об изменении всего этого на bytea
. Но я обеспокоен тем, что поля bytea
кодируются в Hex, поэтому в кодировании и декодировании есть некоторые накладные расходы, и это повредит производительности.
Есть ли хорошие показатели производительности обоих? Кто-нибудь сделал переключатель и увидел разницу?