随笔-124  评论-49  文章-56  trackbacks-0

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是完全绑定到当前线程的Session实例,保证在对于复杂的持久层访问时,依然可以使用Hibernate的访问方式。
posted on 2009-11-03 17:20 junly 阅读(5318) 评论(3)  编辑  收藏 所属分类: hibernate/orm

评论:
# re: hibernate基础-HibernateTemplate 2012-11-14 23:33 | asdf
dsf  回复  更多评论
  
# re: hibernate基础-HibernateTemplate 2012-11-14 23:34 | asdf
dfgsdfgdsfg  回复  更多评论
  
# re: hibernate基础-HibernateTemplate 2012-11-23 18:42 | Super9527
谢谢了  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: