Hibernate增删改查(通过id查询)

来源:互联网 发布:中兴java面试题 编辑:程序博客网 时间:2024/05/16 19:28

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()方法可以把对象从脱管状态变成了持久状态

原创粉丝点击