通常使用
import org.springframework.orm.hibernate4.HibernateTemplate;
import org.springframework.jdbc.core.support.JdbcDaoSupport;---它是抽象类;不能通过配置文件获取bean
还有一种import org.springframework.orm.hibernate4.support.HibernateDaoSupport;
它同伙getSessionFactory 和getHibernateTemplate()实现数据库的操作的
重写一个类实现JdbcDaoSupport,下面方式实例化一个bean
/*
* 验证这个不需要set方法
* @Resource(name="jdbcTemplate")
private JdbcTemplate jdbcTemplate;*/
// @Autowired
@Resource(name="dataSource")
public void setDataSource2(DataSource dataSource)
{
setDataSource(dataSource);
}
import org.springframework.jdbc.core.JdbcTemplate;--它不支持级联user.address或者user.address.id的获取
还有一种直接使用import org.hibernate.SessionFactory;
@Resource(name="sessionFactory")
private SessionFactory sessionFactory;
我在事务层service测试事务操作,分别使用session和sessionFactory删除一条记录,正确,
我在dao层;测试事务操作,分别使用session和hibernateTemplate添加记录,正确
说明:在service层和dao 层进行事务操作都是可以正确使用spring的事务处理的;
使用sessionFactory和hibernateTemplate都是可以的
我原来以为,调用dao层进行spring的事务处理,是不行的,必须在service层;
实际测试在dao层进行事务处理,session和hibernateTemplate都是可以的
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate4.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
hibernateTemplate和sessionFactory都是使用下面的,事务处理上没区别
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>