Я начал приложение с 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, поэтому в кодировании и декодировании есть некоторые накладные расходы, и это повредит производительности.
Есть ли хорошие показатели производительности обоих? Кто-нибудь сделал переключатель и увидел разницу?