程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> HibernateTemplate類的用法

HibernateTemplate類的用法

編輯:關於JAVA

HibernateTemplate 提供非常多的常用方法來完成基本的操作,比如通常的增加、刪除、修改、查詢等操作,Spring 2.0更增加對命名SQL查詢的支持,也增加對分頁的支持。大部分情況下,使用Hibernate的常規用法,就可完成大多數DAO對象的CRUD操作。

1. .find(String queryString);

queryString:hql查詢語句

String queryString = "from user";

this.getHibernateTemplate().find(queryString);

返回:user對象的集合

2. .find(String queryString , Object value);

queryString:hql查詢語句

value:查詢條件

String queryString = "from user u where u.name=?";

this.getHibernateTemplate().find(queryString, "test");

返回:name屬性值為“test”的對象的集合

3. .find(String queryString, Object[] values);

queryString:hql查詢語句

value:查詢條件數組

String hql= "from bean.User u where u.name=? and u.password=?";

this.getHibernateTemplate().find(hql, new String[]{"test", "123"});

返回:name屬性值為“test”並且password屬性值為“123”的對象的集合

4. .findByExample(Object exampleEntity)

exampleEntity:查詢對象的實例

User u=new User();    

u.setPassword("123");

u.setName("bb");    

this.getHibernateTemplate().findByExample(u);  

返回:name屬性值為“bb”並且password屬性值為“123”的對象的集合

此方法查詢即為sql查一張表的“and”條件查詢

5. .findByExample(Object exampleEntity, int firstResult, int maxResults)

exampleEntity:查詢對象的實例

firstResult:查詢結果的起始行數

maxResults:查詢結果的總行數

User u=new User();    
u.setPassword("123");
u.setName("cc");
int start = 0;
int max = 10;
this.getHibernateTemplate().findByExample(u,start,max);

返回:name屬性值為“cc”並且password屬性值為“123”,自0起共10個對象的集合(對象從0開始計數)

6. .findByNamedParam(String queryString , String paramName , Object value)

queryString:hql查詢語句

paramName:查詢條件中引用占位符的名稱

value:引用占位符的值

String queryString = "select count(*) from user u where u.name=:myName";

String paramName= "myName";

String value= "xiyue";

this.getHibernateTemplate().findByNamedParam(queryString, paramName, value);

返回:name屬性值為“xiyue”的對象的集合

7. .findByNamedParam(String queryString , String[] paramNames , Object[] values)

queryString:hql查詢語句

paramNames:查詢條件中引用占位符的名稱的數組

values:引用占位符的值的數組

String queryString = "select count(*) from user u where u.name=:myName and u.password=:myPassword";

String[] paramName= new String[]{"myName", "myPassword"};

String[] value= new String[]{"xiyue", "123"};

this.getHibernateTemplate().findByNamedParam(queryString, paramNames, values);

返回:name屬性值為“xiyue”,並且password屬性值為“123”的對象的集合

getSession()與getHibernateTemplate()

1. 使用getSession()方法你只要繼承 sessionFactory,而使用getHibernateTemplate()方法必須繼承HibernateDaoSupport當然包括 sessionFactory

2. getSession()方法是沒有經過spring包裝的,spring會把最原始的session給你,在使用完之後必須自己調用相應的close方法,而且也不會對聲明式事務進行相應的管理,一旦沒有及時關閉連接,就會導致數據庫連接池的連接數溢出,而getHibernateTemplate()方法是經過spring封裝的,例如添加相應的聲明式事務管理,由spring管理相應的連接。

3. 另外,由於hibernate4已經完全可以實現事務了 與spring3.1中的hibernatedao,hibernateTemplete等有沖突,所以從spring3.1裡已經不提供hibernatedaosupport,hibernateTemplete了,只能用hibernate原始的方式用getSession()。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved