一 思路分析
在Hibernate框架的開發中,session對象是最核心的技術,增、刪、該都需要用到,在通過id查詢的時候用到的也是session對象,但是當有復雜查詢的時候用到的是Query或Criteria類,這三個類都是在同一個包寫的,在hibernate包下
二 Query類和Cirteria類的介紹
1.HQL(hibernate Query Language)面向對象的查詢語言,與sql不同,HQL中的對象名師區分大小寫的, HQL中查的是對象而不是和表,並且支持多態;HQL主要通過Query來操作,Query的創建方式:
Query q = session.createQuery(hql);
l from Person
l from User user where user.name=:name
l from User user where user.name=:name and user.birthday < :birthday
2.Criteria
Criteria是一種比HQL更面向對象的查詢方式;Criteria的創建方式:
Criteria crit = session.createCriteria(DomainClass.class);
簡單屬性條件如:criteria.add(Restrictions.eq(propertyName, value)),
criteria.add(Restrictions.eqProperty(propertyName,otherPropertyName))
三 代碼分析
1.添加任何一個對象
public static void add(Object obj) {
Session session = null;
Transaction tx = null;
try {
session = HibernateUtil.getSession();
tx = session.beginTransaction();// 開啟事務
session.save(obj);// 沒有更新數據庫
tx.commit();// 執行提交事務的時候更新數據庫
} finally {
// 使資源得到釋放
if (session != null) {
session.close();
}
}
}
2.刪除任何一個類中的文件
public static void delete(Object obj) {
Session session = null;
Transaction tx = null;
try {
session = HibernateUtil.getSession();
tx = session.beginTransaction();// 開啟事務
session.delete(obj);
// 刪除之後為瞬時狀態
tx.commit();
} finally {
// 使資源得到釋放
if (session != null) {
session.close();
}
}
}
3.更新任何一個類中的對象
public static void update(Object obj) {
Session session = null;
Transaction tx = null;
try {
session = HibernateUtil.getSession();
tx = session.beginTransaction();// 開啟事務
session.update(obj);
tx.commit();
} finally {
// 使資源得到釋放
if (session != null) {
session.close();
}
}
}