2015-04-02 4 views
3

Почему Hibernate не делал сеансы как автоматические Closeable? Это что-то делать с дизайном сеанса.Почему Hibernate не сделал сеанс автоматическим закрытием?

Должен ли мы написать собственный класс-оболочку для этого, чтобы использовать функцию ARM для Java 7?

+0

Session завод генерировать объект сеанса для вас каждый time.session может быть автоматически вровень вам просто нужно настроить его таким образом. – arjun

ответ

3

спящий режим совместим с Java 6. Так как AutoCloseable была введена в Java 7, он может быть использован только с помощью программного обеспечения, требующего Java 7. версии Hibernate требует Java 7, вероятно, содержат Session реализации AutoCloseable.

0

Это было исправлено в спящем режиме версии 5. Если вы можете перейти на версию 5, используйте это. Поддерживаемые Jira билет

https://hibernate.atlassian.net/browse/HHH-8898

Для проекта, который не может обновить, за что мы можем реализовать наши собственные CloseableSession интерфейс.

public class CloseableSession implements AutoCloseable { 

    private final Session session; 

    public CloseableSession(Session session) { 
     this.session = session; 
    } 

    public Session getSession() { 
     return session; 
    } 

    @Override 
    public void close() { 
     session.close(); 
    } 
} 

Использование

try (CloseableSession session = new CloseableSession(
       sessionFactory.openSession())) { 

} 
Смежные вопросы