Hibernate на самом деле не перекачивает результаты в HashSet
, он заменит все существующие HashSet
собственной реализацией Set
.
Когда вы сделаете экземпляр постоянным,вызывая persist (), Hibernate фактически заменит HashSet экземпляром собственной реализации Set в Hibernate.
http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/collections.html
Если вы используете атрибут order-by, то он выиграетне используйте HashSet
, вероятно, вместо него будет использоваться LinkedHashSet
.Обращайтесь к этому, из того же документа, который я цитировал выше:
Если вы хотите, чтобы сама база данных упорядочивала элементы коллекции, используйте атрибут order-by отображений set, bag или map.Это решение реализовано с использованием LinkedHashSet или LinkedHashMap и выполняет упорядочение в запросе SQL, а не в памяти.
Так что Hibernate будет безопасно поддерживать порядок элементов в Set
- но будьте осторожны, когдаВы создаете новые объекты и сохраняете их.Если вы используете HashSet
вместо LinkedHashSet
в новом объекте, то Hibernate сохранит ваш набор в случайном порядке, потому что HashSet
не гарантирует порядок элементов.