***************************
HibernateUtil.java
***************************
package blog.hibernate;
import java.util.Date;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Restrictions;
import blog.hibernate.domain.User;
public final class HibernateUtil {
private static SessionFactory sessionFactory;
private HibernateUtil(){}
static{
Configuration cfg = new Configuration();
sessionFactory = cfg.configure("hibernate.cfg.xml").buildSessionFactory();
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
public static Session getSession(){
return sessionFactory.openSession();
}
public static Object get(Class clazz,int Id) throws Exception {
Session session = null;
Object object = null;
try {
session = getSession();
object = session.get(clazz, Id);
//object = session.load(class, userId);
return object;
} catch (HibernateException e) {
e.printStackTrace();
throw e;
}finally{
session.close();
}
}
public static void add(Object object) throws Exception {
Session session = null;
Transaction tx = null;
try {
session = getSession();
tx = session.beginTransaction();// 相当于tx =session.getTransaction();tx.begin();
session.save(object);
tx.commit();
} catch (HibernateException e) {
if (tx != null) {
tx.rollback();
}
throw e;
} finally {
if (session != null) {
session.close();
}
}
}
public static void update(Object object) throws Exception {
Session session = null;
Transaction tx = null;
try {
session = getSession();
tx = session.beginTransaction();// 相当于tx =session.getTransaction();tx.begin();
session.update(object);
tx.commit();
} catch (HibernateException e) {
if (tx != null) {
tx.rollback();
}
throw e;
} finally {
if (session != null) {
session.close();
}
}
}
public static void delete(Object object) throws Exception {
Session session = null;
Transaction tx = null;
try {
session = getSession();
tx = session.beginTransaction();// 相当于tx =session.getTransaction();tx.begin();
session.delete(object);
tx.commit();
} catch (HibernateException e) {
if (tx != null) {
tx.rollback();
}
throw e;
} finally {
if (session != null) {
session.close();
}
}
}
/**
* 用HQL实现
* @param username
* @return User
*/
public static User get(String username){
Session session = null;
try {
session = getSession();
//1、String hql = "from User as user where user.name = ?";//User 为类 而不是表名
String hql = "from User as user where user.name =:name";
Query query = session.createQuery(hql);
//1、query.setString(0, username);
query.setString("name", username);
User user = (User)query.uniqueResult();
List<User> users = query.list();
/*//用于分页,可以针对不同的数据库
query.setFirstResult(0);
query.setMaxResults(10);*/
return user;
} catch (HibernateException e) {
throw e;
} finally {
if (session != null) {
session.close();
}
}
}
/**
* 用Criteria接口实现
* @param username
* @return List<User>
*/
@SuppressWarnings("unchecked")
public static List<User> query(){
Session session = null;
try {
session = getSession();
Criteria criteria = session.createCriteria(User.class);
//criteria.add(Restrictions.eq("name",username));
criteria.add(Restrictions.lt("birthday", new Date()));
List<User> users = criteria.list();
/*//分页
criteria.setFirstResult(0);
criteria.setMaxResults(10);*/
return users;
} catch (HibernateException e) {
throw e;
} finally {
if (session != null) {
session.close();
}
}
}
}