Hibernate 入門 使用Hibernate查詢語言對數據庫操作
/*
* 具體操作Hibernate的類:
* 增加、刪除、修改、按ID查詢、模糊查詢、查詢全部操作
* */
public class PersonOperate {
// 在Hibernate中,所有的操作都是通過Session完成
// 此Session不同於JSP的Session
private Session session = null ;
// 在構造方法之中實例化session對象
public PersonOperate()
{
// 找到Hibernate配置
Configuration config = new Configuration().configure() ;
// 從配置中取出SessionFactory
SessionFactory factory = config.buildSessionFactory() ;
// 從SessionFactory中取出一個Session
this.session = factory.openSession() ;
}
// 所有的操作都是通過session進行的
// 向數據庫中增加數據
public void insert(Person p)
{
// 開始事務
Transaction tran = this.session.beginTransaction() ;
// 執行語句
this.session.save(p) ;
// 提交事務
tran.commit() ;
// 關閉Session
this.session.close() ;
}
// 修改
public void update(Person p)
{
// 開始事務
Transaction tran = this.session.beginTransaction() ;
// 執行語句
this.session.update(p) ;
// 提交事務
tran.commit() ;
}
// 按ID查詢:推薦使用HQL —— 是Hibernate官方推薦的查詢語言
public Person queryById(String id)
{
Person p = null ;
// 使用Hibernate查詢語言
String hql = "FROM Person as p WHERE p.id=?" ;
// 通過Query接口查詢
Query q = this.session.createQuery(hql) ;
q.setString(0,id) ;
List l = q.list() ;
Iterator iter = l.iterator() ;
if(iter.hasNext())
{
p = (Person)iter.next() ;
}
return p ;
}
// 刪除數據
// Hibernate2、Hibernate 3通用的刪除
// 使用此方法刪除數據之前,必須先查找到數據對象,性能呢?
public void delete(Person p)
{
Transaction tran = this.session.beginTransaction() ;
// 執行語句
this.session.delete(p) ;
// 提交事務
tran.commit() ;
}
// 在Hibernate 3之中根據HQL中的語句進行了修改,增加了刪除指令
public void delete(String id)
{
String hql = "DELETE Person WHERE id=?" ;
Query q = this.session.createQuery(hql) ;
// 把參數設置
q.setString(0,id) ;
// 執行更新語句
q.executeUpdate() ;
// 進行事務處理
this.session.beginTransaction().commit() ;
}
// 查詢全部數據,寫HQL
public List queryAll()
{
List l = null ;
String hql = "FROM Person as p" ;
Query q = this.session.createQuery(hql) ;
l = q.list() ;
return l ;
}
// 模糊查詢
public List queryByLike(String cond)
{
List l = null ;
String hql = "FROM Person as p WHERE p.name like ?" ;
Query q = this.session.createQuery(hql) ;
q.setString(0,"%"+cond+"%") ;
l = q.list() ;
return l ;
}
}
* 具體操作Hibernate的類:
* 增加、刪除、修改、按ID查詢、模糊查詢、查詢全部操作
* */
public class PersonOperate {
// 在Hibernate中,所有的操作都是通過Session完成
// 此Session不同於JSP的Session
private Session session = null ;
// 在構造方法之中實例化session對象
public PersonOperate()
{
// 找到Hibernate配置
Configuration config = new Configuration().configure() ;
// 從配置中取出SessionFactory
SessionFactory factory = config.buildSessionFactory() ;
// 從SessionFactory中取出一個Session
this.session = factory.openSession() ;
}
// 所有的操作都是通過session進行的
// 向數據庫中增加數據
public void insert(Person p)
{
// 開始事務
Transaction tran = this.session.beginTransaction() ;
// 執行語句
this.session.save(p) ;
// 提交事務
tran.commit() ;
// 關閉Session
this.session.close() ;
}
// 修改
public void update(Person p)
{
// 開始事務
Transaction tran = this.session.beginTransaction() ;
// 執行語句
this.session.update(p) ;
// 提交事務
tran.commit() ;
}
// 按ID查詢:推薦使用HQL —— 是Hibernate官方推薦的查詢語言
public Person queryById(String id)
{
Person p = null ;
// 使用Hibernate查詢語言
String hql = "FROM Person as p WHERE p.id=?" ;
// 通過Query接口查詢
Query q = this.session.createQuery(hql) ;
q.setString(0,id) ;
List l = q.list() ;
Iterator iter = l.iterator() ;
if(iter.hasNext())
{
p = (Person)iter.next() ;
}
return p ;
}
// 刪除數據
// Hibernate2、Hibernate 3通用的刪除
// 使用此方法刪除數據之前,必須先查找到數據對象,性能呢?
public void delete(Person p)
{
Transaction tran = this.session.beginTransaction() ;
// 執行語句
this.session.delete(p) ;
// 提交事務
tran.commit() ;
}
// 在Hibernate 3之中根據HQL中的語句進行了修改,增加了刪除指令
public void delete(String id)
{
String hql = "DELETE Person WHERE id=?" ;
Query q = this.session.createQuery(hql) ;
// 把參數設置
q.setString(0,id) ;
// 執行更新語句
q.executeUpdate() ;
// 進行事務處理
this.session.beginTransaction().commit() ;
}
// 查詢全部數據,寫HQL
public List queryAll()
{
List l = null ;
String hql = "FROM Person as p" ;
Query q = this.session.createQuery(hql) ;
l = q.list() ;
return l ;
}
// 模糊查詢
public List queryByLike(String cond)
{
List l = null ;
String hql = "FROM Person as p WHERE p.name like ?" ;
Query q = this.session.createQuery(hql) ;
q.setString(0,"%"+cond+"%") ;
l = q.list() ;
return l ;
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.