HibernateTemplate提供非常多的常用方法來完成基本的操作,比如通常的增加、刪除、修改、查詢等操作,Spring 2.0更增加對命名SQL查詢的支持,也增加對分頁的支持。大部分情況下,使用Hibernate的常規(guī)用法,就可完成大多數(shù)DAO對象的CRUD操作。下面是HibernateTemplate的常用方法簡介:
q void delete(Object entity):刪除指定持久化實(shí)例
q deleteAll(Collection entities):刪除集合內(nèi)全部持久化類實(shí)例
q find(String queryString):根據(jù)HQL查詢字符串來返回實(shí)例集合
q findByNamedQuery(String queryName):根據(jù)命名查詢返回實(shí)例集合
q get(Class entityClass, Serializable id):根據(jù)主鍵加載特定持久化類的實(shí)例
q save(Object entity):保存新的實(shí)例
q saveOrUpdate(Object entity):根據(jù)實(shí)例狀態(tài),選擇保存或者更新
q update(Object entity):更新實(shí)例的狀態(tài),要求entity是持久狀態(tài)
q setMaxResults(int maxResults):設(shè)置分頁的大小
下面是一個(gè)完整DAO類的源代碼:
public class PersonDAOHibernate implements PersonDAO
{
//采用log4j來完成調(diào)試時(shí)的日志功能
private static Log log = LogFactory.getLog(NewsDAOHibernate.class);
//以私有的成員變量來保存SessionFactory。
private SessionFactory sessionFactory;
//以私有變量的方式保存HibernateTemplate
private HibernateTemplate hibernateTemplate = null;
//設(shè)值注入SessionFactory必需的setter方法
public void setSessionFactory(SessionFactory sessionFactory)
{
this.sessionFactory = sessionFactory;
}
//初始化本DAO所需的HibernateTemplate
public HIbernateTemplate getHibernateTemplate()
{
//首先,檢查原來的hibernateTemplate實(shí)例是否還存在
if ( hibernateTemplate == null)
{
//如果不存在,新建一個(gè)HibernateTemplate實(shí)例
hibernateTemplate = new HibernateTemplate(sessionFactory);
}
return hibernateTemplate;
}
//返回全部的人的實(shí)例
public List getPersons()
{
//通過HibernateTemplate的find方法返回Person的全部實(shí)例
return getHibernateTemplate().find("from Person");
}
/**
* 根據(jù)主鍵返回特定實(shí)例
* @ return 特定主鍵對應(yīng)的Person實(shí)例
* @ param 主鍵值
public News getNews(int personid)
{
return (Person)getHibernateTemplate().get(Person.class, new Integer(personid));
}
/**
* @ person 需要保存的Person實(shí)例
*/
public void savePerson(Person person)
{
getHibernateTemplate().saveOrUpdate(person);
}
/**
* @ param personid 需要?jiǎng)h除Person實(shí)例的主鍵
* /
public void removePerson(int personid)
{
//先加載特定實(shí)例
Object p = getHibernateTemplate().load(Person.class, new Integer(personid));
//刪除特定實(shí)例
getHibernateTemplate().delete(p);
}
}
posted on 2007-10-01 19:55
Ke 閱讀(23571)
評論(1) 編輯 收藏 所屬分類:
hibernate