zoukankan      html  css  js  c++  java
  • 《spring2.0技术手册》读书笔记九spring与hibernate整合DAO的书写,HibernateTemplate解析

    在spring与hibernate结合以后,可以使用spring提供的org.springframework.orm.hibernate3.HibernateTemplate,或org.springframework.orm.hibernate3.support.HibernateDaoSupport来实现DAO类。

    利用HibernateTemplate

    import org.hibernate.SessionFactory;
    import org.springframework.orm.hibernate3.HibernateTemplate;
    public class UserDAO implements IUserDAO{
    	private HibernateTemplate hibernateTemplate;
    	
    	public void setSessionFactory(SessionFactory sessionFactory){
    		hibernateTemplate=new HibernateTemplate(sessionFactory);
    	}
    	public void insert(User user){
    		hibernateTemplate.save(user);
    	}
    	
    	public User find(Integer id){
    		User user=(User)hibernateTemplate.get(User.class, id);
    		return user;
    	}
    }


    继承HibernateDaoSupport

    import org.hibernate.SessionFactory;
    import org.springframework.orm.hibernate3.HibernateTemplate;
    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
    public class UserDAO extends HibernateDaoSupport implements IUserDAO{
    	
    	public void insert(User user){
    		getHibernateTemplate().save(user);
    	}
    	
    	public User find(Integer id){
    		User user=(User)getHibernateTemplate().get(User.class, id);
    		return user;
    	}
    }

    继承HibernateDaoSupport的好处是可以省去一些管理SessionFactory、HibernateTemplate资源的工作,只要注入SessionFactory实例即可。Spring会采用“每次事务打开一个Session”的策略,自动提高DB访问性能。

    补:纵观全局,HibernateTemplate对于DAO的简便实现至关重要,介绍方法如下

    构造方法:HibernateTemplate()、HibernateTemplate(SessionFactory)、HibernateTemplate(SessionFactory,boolean allCreate)。

    操作方法:void delete(Object entity):删除指定持久化类实例;void deleteAll(Collection entities):删除集合内部的全部持久化类实例;

    List find(String queryString)、List find(String queryString, Object value)、List find(final String queryString, final Object... values):查询。value为参数值,根据sql语句中的参数位置(0,1,2...)确定;

    List findByNamedParam(String queryString, String paramName, Object value)、List findByNamedParam(final String queryString, final String[] paramNames, final Object[] values):根据参数名设置参数,进行查询;

    Object get(String entityName, Serializable id):根据主键加载特定持久化类的实例;

    Serializable save(final Object entity):保存新的实例。void update(Object entity):更新实例,要求entity是持久化状态。void saveOrUpdate(final Object entity) :根据实例状态,选择保存或更新;

    void setMaxResults(int maxResults):设置最大行数,用于分页的大小。




  • 相关阅读:
    测试平台系列(9) 与前端联调注册/登录接口(part 2)
    测试平台系列(8) 与前端联调注册/登录接口(part 1)
    测试平台系列(7) 改造注册接口
    测试平台系列(6) 配置flask-sqlalchemy
    测试平台系列(5) 引入Ant Design Pro
    UICollectionView添加headerView
    iOS UICollectionReusableView xib 拖不了线
    xcode Errors were encountered while preparing your device for development. P
    UICollectionView Cell大小自适应 并靠左对齐最简单的实现
    iOS UICollectionView 一行三个计算 高度
  • 原文地址:https://www.cnblogs.com/whuqin/p/4982076.html
Copyright © 2011-2022 走看看