Java hibernate spring与最新版本的集成
Hi在下面的论坛中找到,该论坛描述了不使用Spring hibernate模板: 它说: 自hibernate 3.0.1以来,不再需要HibernateTemplate, 自从发布以来,很好地插入hibernate变得更加容易, 在那之前,春天需要一些诡计,代理和黑客来管理 事务、线程绑定会话和异常转换。现在 有了不再需要的新版本的hibernate,您 仍然可以得到所有的好东西例外翻译,会话管理 等等,但不使用任何特定于spring的类。哪个imho是 真的很好,它使得弹簧的使用更加不显眼 我使用了HibernateTemplate和Dao支持,在新的应用程序中使用这些API需要吗 可以给我一些最新的示例代码来集成Hibernate和Spring框架吗 (二) 此样式类似于Hibernate参考文档和示例,只是将SessionFactory保存在实例变量中。我们强烈建议在Hibernate的CaveatEmptor示例应用程序中使用这种基于实例的设置,而不是老式的静态HibernateUtil类Java hibernate spring与最新版本的集成,java,hibernate,spring,Java,Hibernate,Spring,Hi在下面的论坛中找到,该论坛描述了不使用Spring hibernate模板: 它说: 自hibernate 3.0.1以来,不再需要HibernateTemplate, 自从发布以来,很好地插入hibernate变得更加容易, 在那之前,春天需要一些诡计,代理和黑客来管理 事务、线程绑定会话和异常转换。现在 有了不再需要的新版本的hibernate,您 仍然可以得到所有的好东西例外翻译,会话管理 等等,但不使用任何特定于spring的类。哪个imho是 真的很好,它使得弹簧的使用更加不显眼
由于我们在许多地方使用SessionFactory,这是自我在以前的Spring版本中使用HibernateUtil以来获取会话的最佳方式,因此模板模型用于为许多不同的框架(Hibernate、JPA、JMS等)提供通用抽象。虽然这使得开发变得容易,但它也将您的业务代码绑定到Spring框架。Spring3.x的目标之一是将您的应用程序代码与Spring解耦,要求您使用尽可能少的Spring特定代码,从而使您的代码更加可重用 推荐的集成风格是针对普通数据对DAO进行编码 Hibernate、JPA和JDOAPI。使用弹簧刀的旧风格 不再推荐模板;然而,这种风格的报道 可以在中的A.1节“经典ORM用法”中找到 附录。
[] Spring提供的增强功能(事务管理、异常转换等)现在通过AOP实现,您不必在代码中担心它。该机制如所述: 而传统方法在
使用Hibernate会话工厂而不是Hibernate模板,如下所示:
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;
}
}
@Repository(“LoginDetailsDAO”)
@交易的
公共类LoginDetailsDAOImpl扩展HomeSessionFactory实现LoginDetailsDAO{
@抑制警告(“未选中”)
@事务(只读=真)
公共列表登录详细信息(用户登录){
Session Session=sessionFactory.openSession();
事务=会话。beginTransaction();
列表结果=session.createQuery(“来自UserLogin”).List();
commit();
返回结果;
}
}
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>
org.hibernate.dialogue.mysqldialogue
真的
com.home.app.model.UserLogin
属性/database.properties