spring的HibernateDaoSupport、HibernateTemplate、jdbcTemplate

spring提供访问数据库的有三种方式:HibernateDaoSupport,HibernateTemplate(推荐使用),jdbcTemplateHibernateTemplate:org.springframework.orm.hibernate3.HibernateTemplateHibernateDaoSupport:org.springframework.orm.hibernate3.support.HibernateDaoSupportspring要整合hibernate的话,首先就应该获得SessionFactory这个类,然后再通过获得session就可以进行访问数据库了 即spring提供的类HibernateDaoSupport,HibernateTemplate应先注入setSessionFactory 1、hibernateDaoSupport方式部分applicationContext.xml代码如下: <!– 定义数据源 –><bean id="datasource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property><property name="url"><value>jdbc:mysql:///bfblog</value></property><property name="username"><value>root</value></property><property name="password"><value>123456</value></property></bean><!– 定义sessionFactory –><bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><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">false</prop></props></property><property name="mappingResources"><list><value>com/sun/pojo/User.hbm.xml</value><value>com/sun/pojo/Article.hbm.xml</value><value>com/sun/pojo/Critique.hbm.xml</value><value>com/sun/pojo/BlogInfo.hbm.xml</value><value>com/sun/pojo/Dianjiliang.hbm.xml</value></list></property></bean><!– 定义HibernateTemplate –><bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean><bean id="userDAO" class="com.sun.dao.UserDAOImpl"><property name="hibernateTemplate"><ref bean="hibernateTemplate" /></property></bean><bean id="userService" class="com.sun.service.UserServiceImpl"><property name="userDAO"><ref bean="userDAO" /></property></bean><bean id="registerAction" class="com.sun.action.Register"><property name="userService"><ref bean="userService" /></property></bean>对于HibernateTemplate:在程序中直接用就可以了,如下@Repositorypublic class UserDAOImpl implements UserDAO {@Autowiredprivate HibernateTemplate hibernateTemplate;public User QueryByID(String username) {List list = hibernateTemplate.find("select user from User user where user.username=’"+ username + "’");if (list.size() == 0) {return null;} else {User user = (User) list.get(0);return user;}}public void addUser(User user) {hibernateTemplate.save(user);}这里的sessionFacotry注入不是给类UserDaoImpl的,而是给继承HibernateDaoSupport类的sessionFactory,使用HibernateDaoSupport好处就是我们不再需要关心关闭、是否连接成功等问题(在使用spring封装的这些类,即HibernateDaoSupport,HibernateTemplate,jdbcTemplate,都不需要关心是否关闭,是否连接的问题,因为spring已这些操作封装给注入好了),, 这样用起来很方便。但是这个不好就是java只支持单继承,所以唯一的继承给了HibernateDaoSupport有点可惜。hibernateTemplate的常用方法:?voiddelete(Objectentity):删除指定持久化实例?deleteAll(Collectionentities):删除集合内全部持久化类实例?find(StringqueryString):根据HQL查询字符串来返回实例集合?findByNamedQuery(StringqueryName):根据命名查询返回实例集合?get(ClassentityClass,Serializableid):根据主键加载特定持久化类的实例?save(Objectentity):保存新的实例?saveOrUpdate(Objectentity):根据实例状态,选择保存或者更新?update(Objectentity):更新实例的状态,要求entity是持久状态?setMaxResults(intmaxResults):设置分页的大小HibernateDaoSupport:Spring为Hibernate的DAO提供工具类:HibernateDaoASupport。该类主要提供如下两个方法,方便DAO的实现:1、publicfinalHibernateTemplategetHibernateTemplate()2、publicfinalvoidsetSessionFactory(SessionFactorysessionFactory)其中setSessionFactory方法用来接收Spring的ApplicationContext的依赖注入,可接收配置在Spring的SessionFactory实例,getHibernateTemplate方法则用来更具获得的SessionFactory产生Session,最后生成HibernateTeplate来完成数据库访问。HibernateTemplate用于持久层的访问,该模板无需打开session及关闭Session。它只要获得SessionFactory的引用,就可以打开Session,并在持久化访问结束后关闭Session,程序开发只需要完成持久曾逻辑,通用的CRUD操作由HibernateTemplate完成.其实Spring+hibernate访问数据库有以下几种方法:生活中最基本的技巧是交流,最可依赖的品质是耐心,

spring的HibernateDaoSupport、HibernateTemplate、jdbcTemplate

相关文章:

你感兴趣的文章:

标签云: