Hibernate框架session的方法

  • 2020 年 11 月 28 日
  • 筆記
package Test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import model.stud;

public class testmain {
    public static void main(String[] args) {
        
        //配置信息对象
        Configuration config=new Configuration();
        //配置全局对象
        config=config.configure("hibernate.cfg.xml");
        //创建session工厂
        SessionFactory sessionfactory=config.buildSessionFactory();
        //建立数据库会话
        Session session=sessionfactory.openSession();
        //获取事务对象
        Transaction t=session.beginTransaction();
        stud stu=new stud(null, "猪大肠", "123456", "嫖娼");
        session.save(stu);
        t.commit();
        session.close();
    }
}

 以上是测试的基本配置

Session对象的方法

    1.save:保存对象(就相当于sql语句里面的添加语句一样);

        persist():保存一个对象,跟save作用一样(*如果手动设置了ID,则save方法会忽略ID,而persist方法会抛出一个异常)

    2.get:根据OID获取对象(*根据id查询对象):

     

stud stud = session.get(stud.class, 1);
System.out.println(stud);

    3.load:加载一个对象,跟get方法一样:

          1.get会立即查询,而load不会立即查询,要等到调用到它时它才会去查询

          2.load加载之后,如果session被管理,则直接抛出异常

          3.如果数据库中没得响应的结果,则get会返回一个null,而load会直接抛出异常

stud stud=session.load(stud.class, 1);
System.out.println(stud);

    4.clear:清空缓存

session.clear();

    5.refresh.重新加载某个对象

    6.evict:可以将某个被session管理的持久化对象,从session中移除,使其变为游离对象;

          1.瞬时态:

              存在于程序中,不存在数据库中,没有oid,不在session中

  如下:

1 UserInfo userInfo = new UserInfo(88,"恶霸天","987654",30,"小鱼儿与花无缺","[email protected]");
2 System.out.println(userInfo);

 

          2.游离态:

              存在与程序中,存在与数据库中,有oid,不在session中

  如下:

1 UserInfo userInfo3 = session.get(UserInfo.class, 4);
2 session.clear();
  //修改密码
3 userInfo3.setPassWord("6666666");

 

           3.持久态:

              存在于程序中,存在于数据库中,有oid,在session中

     如下:

        UserInfo userInfo2 = session.get(UserInfo.class, 5);

 

   7.close:关闭

session.close();

  8.update:更新对象(游离),该对象会转变为持久化对象

        //修改
        session.update(userInfo);
        
                    

 

  9.delete:从数据库中删除一个对象, session的delete方法是通过主键进行删除的,主键不存在则异常,持久状态对象被delete后变成瞬时状态对象

session.delete(1);

  10.saveOrUpdate:系统会判断该对象,如果是临时对象,就会执行保存操作,如果是游离对象,则执行更新操作

    stud stu1=new stud(null, "王胖子", "123456", "嫖娼");
        session.saveOrUpdate(stu1);

  11.flush:发送让session对象SQL语句
  

 

   以上方法本人已测试,如有写错的地方请大家指出