import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtils {
//SessionFactory只需要一个就可以了
private static SessionFactory sessionFactory;
static{
// Configuration cfg = new Configuration();
// cfg.configure();//读取默认的配置文件(hibernate.cfg.xml)
// cfg.configure("hibernate.cfg.xml");//读取指定位置的配置文件
// sessionFactory = cfg.buildSessionFactory();
sessionFactory = new Configuration()
.configure()
.buildSessionFactory();
}
/**
* 获取全局唯一的SessionFactory
*/
public static SessionFactory getSessionFactroy(){
return sessionFactory;
}
/**
* 从全局唯一的SessionFactory中打开一个session
* @return
*/
public static Session openSession(){
return sessionFactory.openSession();
}
}
======================
package cn.icss.b_dao;
import java.util.List;
public class QueryResult {
private int count;//总记录数
private List list;//一页的数据
public QueryResult(int count, List list) {
this.count = count;
this.list = list;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
}
=================================
package cn.icss.b_dao;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import cn.icss.a_helloworld.User;
public class UserDao {
public void save(User user){
Session session = HibernateUtils.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
session.save(user);
tx.commit();
} catch (RuntimeException e) {
tx.rollback();
throw e;
}finally{
session.close();
}
}
public void update(User user){
Session session = HibernateUtils.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
//操作
session.update(user);
tx.commit();
} catch (RuntimeException e) {
tx.rollback();
throw e;
}finally{
session.close();
}
}
public void delete(Integer id){
Session session = HibernateUtils.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
//操作
User user = (User) session.get(User.class, id);
session.delete(user);//删除的是实体对象
tx.commit();
} catch (RuntimeException e) {
tx.rollback();
throw e;
}finally{
session.close();
}
}
public User getById(int id){
Session session = HibernateUtils.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
//操作
User user = (User) session.get(User.class, id);
tx.commit();
return user;
} catch (RuntimeException e) {
tx.rollback();
throw e;
}finally{
session.close();
}
}
//查询所有
public List<User> findAll(){
Session session = HibernateUtils.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
//操作
List<User> list = session.createQuery(
"FROM User").list();
tx.commit();
return list;
} catch (RuntimeException e) {
tx.rollback();
throw e;
}finally{
session.close();
}
}
//分页(一页)
public QueryResult findAll(int firstResult, int maxResults){
Session session = HibernateUtils.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
//操作
// 方式一:
// Query query = session.createQuery("FROM User");
// query.setFirstResult(firstResult);
// query.setMaxResults(maxResults);
// List<User> list = query.list();
// 方式二:方法链
List<User> list = session.createQuery("FROM User")
.setFirstResult(firstResult)
.setMaxResults(maxResults)
.list();
//查询总记录数
// session.createQuery("SELECT COUNT(*) FROM User").list().get(0);
Long count = (Long) session.createQuery(
"SELECT COUNT(*) FROM User")
.uniqueResult();
tx.commit();
//返回结果
return new QueryResult(count.intValue(), list);
} catch (RuntimeException e) {
tx.rollback();
throw e;
}finally{
session.close();
}
}
}