Hibernate Spring интеграции с последним выпуском - PullRequest
1 голос
/ 23 августа 2011

Привет, найденный ниже форум, который описывает, как не использовать шаблон спящего режима Spring:

http://forum.springsource.org/showthread.php?111771-what-is-the-difference-between-hibernate-template-and-hibernate-dao-support.

там написано:

HibernateTemplate больше не нуженначиная с hibernate 3.0.1, с этого выпуска стало проще подключать плагин к hibernate, до этой весны требовались некоторые хитрости, проксирование и взлом для управления транзакциями, сессиями с привязкой к потокам и трансляцией исключений.Теперь с более новыми версиями hibernate, которые больше не нужны, вы все равно получаете перевод приятных мелочей, управление сеансами и т. Д., Но без использования каких-либо специальных классов Spring.Какой imho действительно хорош, он делает использование Spring еще менее навязчивым.

Я использовал поддержку HibernateTemplate и Dao, нужно ли использовать этот API в новом приложении?

МожетУ меня есть последний пример кода для интеграции Hibernate с Spring Framework.

2)

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/orm.html#orm-hibernate-straight

Этот стиль похож на стиль справочной документации и примеров Hibernate,за исключением хранения SessionFactory в переменной экземпляра.Мы настоятельно рекомендуем такую ​​установку на основе экземпляра поверх статического класса HibernateUtil старой школы из примера приложения Havenate CaveatEmptor.

, поскольку во многих местах мы используем SessionFactory, что является лучшим способом получить сессию, поскольку ранее я использовал HibernateUtil

Ответы [ 2 ]

2 голосов
/ 23 августа 2011

В предыдущих версиях Spring модель шаблона использовалась для обеспечения общей абстракции для множества различных сред (Hibernate, JPA, JMS и т. Д.). Хотя это облегчило разработку, оно также привязало ваш бизнес-код к Spring Framework. Одна из целей Spring 3.x состоит в том, чтобы отделить код приложения от Spring, требуя от вас использовать как можно меньше кода, специфичного для Spring, что делает ваш код более пригодным для повторного использования.

Рекомендуемый стиль интеграции - кодирование DAO против простого Hibernate, JPA и JDO API. Старый стиль использования Spring DAO шаблоны больше не рекомендуется; Тем не менее, освещение этого стиля можно найти в разделе A.1 «Классическое использование ORM» в добавления.
[ Источник ]

Расширенные функциональные возможности, предоставляемые Spring (управление транзакциями, трансляция исключений и т. Д.), Теперь выполняются через AOP, и вам не нужно беспокоиться об этом в своем коде. Механизм описан в:

13.3.2. Реализация DAO на основе простого API Hibernate 3

тогда как унаследованный подход описан в

Классическое использование ORM: A.1.1.1 Шаблон Hibernate

1 голос
/ 11 сентября 2011

Используйте Hibernate Session Factory вместо Hibernate Template как:

public abstract class HomeSessionFactory {

   @Autowired
protected SessionFactory sessionFactory;

}

расширить этот класс в вашем файле xxDAOImpl как.

@Repository("LoginDetailsDAO")
@Transactional
public class LoginDetailsDAOImpl extends HomeSessionFactory implements LoginDetailsDAO {
    @SuppressWarnings("unchecked")
    @Transactional(readOnly = true)
    public List<UserLogin> loginDetails(UserLogin login) {
        Session session = sessionFactory.openSession();
        Transaction transaction = session.beginTransaction();
        List<UserLogin> result = session.createQuery("from UserLogin").list();
        transaction.commit();
        return result;
    }
}

Файл контекста Spring:

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource">
        <ref bean="dataSource" />
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
        </props>
    </property>
    <property name="annotatedClasses">
        <list>
            <value>com.home.app.model.UserLogin</value>
        </list>
    </property>
</bean>
<bean
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
        <value>properties/database.properties</value>
    </property>
</bean>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
</bean>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...