hibernate:使用hibernate 的template接口

HibernateTemplate的 常规 用法 
1 ,void delete ( Object entity ) : 删除指定持久化实例 
public void removePerson( int personid) 

  //先加载特定的实例 
  Object  p  = getHibernateTemplate().load( Person.class , new Integer( personid)); 
  //删除特定实例 
  getHibernateTemplate().delete (p); 

2 ,deleteAll ( Collection entities ) : 删除集合内全部持久化类实例 

3 ,find ( String queryString ) : 根据HQL查询字符串来返回实例集合 
Public List getPersons() 

//返回Person的全部实例 
return getHibernateTemplate().find ( " from Person " ); 


4 ,findByNamedQuery ( String queryName) : 根据命名查询返回实例集合 

5 ,get ( Class entityClass , Serializable id ) : 根据主键加载特定持久化类的实例 
public Person getPerson() 
{  
//返回特定主键对应的Person实例 
return (Person)getHibernateTemplate().get (Person.class , new Integer(person id)); 

6 ,save ( Object entity ) : 保存新的实例 

7 ,saveOrUpdate ( Object entity ): 根据实例状态,选择保存或者更新 

8 ,update ( Object entity ) : 更新实例的状态,要求entity是持久状态 

9 ,setMaxResults ( int maxResults ) : 设置分页的大小。 

HibernateTemplate的 更灵活 的用法 : 
更灵活的访问是通过以下两个方法完成的: 
Object  execute ( HibernateCallback action ) ; 
List  execute ( HibernateCallback action ); 
这两个方法都需要一个HibernateCallback的实例,可以在任何有效的hibernate数据访问中使用。用法灵活,解决了Spring封装Hibernate后灵活性不足的缺陷。 HibernateCallback 是一个接,该接口只有一个方doInHibernate ( org.hibernate.Session session ), 该方法只有一个参数Session. 
具体代码如下: 
public class PersonDaolmpl implements PersonDao 

// 私有实例变量保存SessionFactory 
private SessionFactory sessionFactory; 
// 依赖注入必需的setter 方法 
public void setSessionFactory(SessionFactory sessionFactory) 

this.sessionFactory = sessionFactory; 

/** 
*通过人名查找所有匹配该名的Person 实例 
* @param name 匹配的人名 
* @return 匹配该任命的全部Person 集合 
*/ 
public List findPersonsByName(final String name) 
//创建HibernateTemplate实例 
HibernateTemplate hibernateTemplate = new HibernateTemplate(this.sessionFactory); 
//返回HibernateTemplate的execute 的结果 
return (List) hibernateTemplate.execute ( 
//创建匿名内部类 
new HibernateCallback () 
public Object doInHibernate (Session session) 
throws Hibernate Exception 

//使用条件查询的方法返回 
List result = session.createCriteria(Person.class) 
.add(Restrictions.like("name", name+ " %") .list ( ) ; 
return result; 
} ) : 


注意:在方法doInHibernate内可以访问到Session,该session是完

猜你喜欢

转载自billdlut.iteye.com/blog/1492279