Чтобы получить еще более высокую производительность результаты, которые вы можете включить JDBC заявления партии на SessionFactory
/EntityManager
, установив hibernate.jdbc.batch_size
свойство на SessionFactory конфигурации (т.е .: LocalEntityManagerFactoryBean
).
Чтобы оптимально использовать вставку/обновления партии jdbc, записывайте как можно больше объектов одного типа. Hibernate будет обнаруживать, когда вы пишете другой тип сущности, и автоматически очищает пакет, даже если он не достиг определенного размера партии.
Использование StatelessSession ведет себя в основном так же, как использование чего-то вроде Spring's JdbcTemplate
. Преимущество использования StatelessSession
заключается в том, что преобразование и перевод в SQL обрабатывается Hibernate. Когда вы используете мой StatelessSessionFactoryBean
, вы можете даже смешивать Session
и StatelessSession
, смешанные в одну транзакцию. Но будьте осторожны с модификацией объекта, загруженного Session
, и сохраняя его с помощью StatelessSession
, потому что это приведет к проблемам с блокировкой.
Поскольку сеанс имеет соединение с базой данных, вы обеспокоены жизни вашего экземпляра statelessSession? Не будет ли время жизни соединения, принадлежащего statelessSession, по существу тем же самым, что и срок жизни экземпляра MyRepositoryImpl? – mangotang
Похоже, что это прокси-сервер, а реальный statelessSession закрыт функцией StatelessSessionSynchronization – user472749