Некоторые проблемы с атрибутами:
, Если Вы используете атрибуты в качестве контейнеров для данных, Вы заканчиваете с документами, которые трудно прочитать и поддержать. Попытайтесь использовать элементы для описания данных. Используйте атрибуты только для предоставления информации, которая не относится к данным.
не заканчиваются как это (это не то, как XML должен использоваться):
Источник: http://www.w3schools.com/xml/xml_dtd_el_vs_attr.asp
Вы можете сообщить Hibernate, что конкретная сущность неизменна, используя @Entity (mutable = false)
или @Immutable
аннотации. Обратите внимание, что оба являются расширениями Hibernate для стандарта JPA.
Это , а не , однако, заставит Hibernate повторно использовать объекты - это просто позволит немного оптимизировать производительность, так как что касается кеширования / промывки. Компоненты также не могут быть аннотированы таким образом.
Чтобы сделать то, что вы хотите, вам придется написать свой собственный тип; тогда вы сможете иметь предопределенные экземпляры для определенных (наиболее распространенных) значений и возвращать их вместо создания нового экземпляра.
Другой альтернативой является определение PreLoadEventListener для этого;
Воспользуйтесь преимуществами кеш-памяти второго уровня Hibernate. Для неизменяемых объектов, подобных тем, которые вы описали, вы захотите использовать стратегию кеширования только для чтения. Я использовал кеш второго уровня в нескольких приложениях, и это значительно улучшило производительность. Стоит потратить время, чтобы по-настоящему понять последствия кэширования, поэтому я настоятельно рекомендую вам прочитать документацию по Hibernate по кешу второго уровня: