Hibernate增删改查(通过id查询)
package com.hbsi.hibernate.utils;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public final class HibernateUtil {
privatestatic SessionFactory sessionFactory;
privateHibernateUtil() {
}
static{
//使用hibernate完成将对象存入表中
Configurationcfg = new Configuration();// 设置配置对象
cfg.configure();//用来完成hibernate的初始化----读取配置文件,里面的参数表示配置文件的位置,如果配置文件名字与路径均为现在这样,参数省略
//SessionFactory对象----相当于DriverManager驱动器管理器
sessionFactory= cfg.buildSessionFactory();
}
publicstatic SessionFactory getSessionFactory() {
returnsessionFactory;
}
publicstatic Session getSession() {
returnsessionFactory.openSession();
}
//删除
publicstatic void delete(Object obj) {
Session session = null;
Transaction tx = null;
try {
// 获取到session对象
session =HibernateUtil.getSession();
tx =session.beginTransaction();// 开启事务并且返回该事务对象
session.delete(obj);// 此时处于瞬时状态
tx.commit();
} finally {// 保证资源得到释放
if (session != null) {
session.close();
}
}
}
//更新
publicstatic void update(Object obj) {
Session session = null;
Transaction tx = null;
try {
// 获取到session对象
session =HibernateUtil.getSession();
tx = session.beginTransaction();//开启事务并且返回该事务对象
session.update(obj);
tx.commit();
} finally {// 保证资源得到释放
if (session != null) {
session.close();
}
}
}
//添加
publicstatic void add(Object obj) {
Session session = null;
Transaction tx = null;
try {
// 获取到session对象
session =HibernateUtil.getSession();
tx =session.beginTransaction();// 开启事务并且返回该事务对象
session.save(obj);
tx.commit();
} finally {// 保证资源得到释放
if (session != null) {
session.close();
}
}
}
//查找
publicstatic Object get(Class clazz, int id) {
//查询不需要事务
Sessionsession = null;
try{
//获取到session对象
session= HibernateUtil.getSession();
Objectobj = session.get(clazz, id);
/*
* Class clazz=User.class;//user类型所对应的class对象 User user=(User)
* session.get(clazz, id);
*/// 第一个参数是一个class类型的参数,第二个参数是id
/*
* User user=(User) session.load(clazz,
* id);//懒加载,这句话没有访问数据库,返回的是一个代理对象,代理对象永远不为空
* System.out.println(user.
* getId()+"----"+user.getName());//第一个使用会连接数据库,就不会再抛异常了
*/
returnobj;
}finally {// 保证资源得到释放
if(session != null) {
session.close();
}
}
}
}
update()方法和saveOrupdate()方法可以把对象从脱管状态变成了持久状态