Spring HibernateTemplate - Автопроводка - PullRequest
0 голосов
/ 04 января 2012

Вместо автоматической разводки SessionFactory и создания HibernateTemplate Можно ли использовать автоматическую разводку HibernateTemplate?

public class DaoImpl implements Dao {

private HibernateTemplate hibernateTemplate;

@Autowired
public void setSessionFactory(SessionFactory sessionFactory) {
    hibernateTemplate = new HibernateTemplate(sessionFactory);
}
...
}

вместо приведенного выше кода, это нормально иметь как указано ниже?

public class DaoImpl implements Dao {

@Autowired private HibernateTemplate hibernateTemplate;

...
}

и настройте HibernateTemplate в XML.

Каковы плюсы и минусы этого подхода?

Ответы [ 3 ]

2 голосов
/ 04 января 2012

Вы можете сделать это, но если вы используете Hibernate 3.0.1, вы можете избежать шаблона hibernate. Ниже приведен шаблон Hibernate Api здесь

NOTE: As of Hibernate 3.0.1, transactional Hibernate access code can also be coded in 
plain Hibernate style. Hence, for newly started projects, consider adopting the standard
Hibernate3 style of coding data access objects instead, based on 
SessionFactory.getCurrentSession(). 

Такжесогласно поддержке jboss, указанной здесь

If you plan to use the Spring Hibernate template, then don't.
The Spring template were useful with Hibernate 2.x because of some mistakes we made   
the main one beeing checked exceptions. This is no longer the case for Hibernate 3.x. 
If you remove this exception wrapping necessity, Spring template are lust an overhead 
on top of the Hibernate API (hiding you the richness of the Hibernate API is some 
cases).

Одним из основных изменений в Hibernate 3 стал переход от проверенных исключений к непроверенным.Прочитайте статью здесь , чтобы узнать больше об этом и еще один здесь .

0 голосов
/ 04 января 2012

Да, это возможно, и неудивительно, что Spring уже предоставляет простой механизм для этого при условии, что ваш DAO распространяется с HibernateDaoSupport .После этого вы получите доступ к шаблону, используя getHibernateTemplate().Единственный недостаток, о котором я могу думать, это то, что ваш DAO связан с классами, специфичными для Spring, но с хорошо протестированными библиотеками все в порядке.Кроме того, у вас уже есть прямая ссылка на HibernateTemplate в любом случае.

0 голосов
/ 04 января 2012

Конечно, все в порядке.Он не лучше и не хуже первого подхода, он просто другой.

Выберите тот, который, по вашему мнению, улучшает читаемость кода, это единственное реальное отличие и оно субъективно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...