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,"小鱼儿与花无缺","simalfishchild@qq.com");
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语句
  

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

Hibernate框架session的方法的更多相关文章

  1. Hibernate(5)session的方法

    1. Session缓存 Session缓存(Hibernate一级缓存),在 Session 接口的实现中包含一系列的 Java 集合, 这些 Java 集合构成了 Session 缓存.只要 Se ...

  2. 阅读Hibernate框架Session接口的源码的笔记

    一.阅读Session接口的注释的理解.(看着注释翻译的,有些地方可能翻译的不太对,有疑问再看源文档) ①.Session的生命周期随着事务开始而开始,事务的结束而结束. 附原文:The lifecy ...

  3. Hibernate中Session.save()方法的返回值是什么

    public   Serializable   save(Object   object)     Parameters:     object   -   a   transient   insta ...

  4. Hibernate框架(一)——总体介绍

    作为SSH三大框架之一的Hibernate,是用来把程序的Dao层和数据库打交道用的,它封装了JDBC的步骤,是我们对数据库的操作更加简单,更加快捷.利用Hibernate框架我们就可以不再编写重复的 ...

  5. Hibernate框架(一)总结介绍

    作为SSH三大框架之一的Hibernate,是用来把程序的Dao层和数据库打交道用的,它封装了JDBC的步骤,是我们对数据库的操作更加简单,更加快捷.利用Hibernate框架我们就可以不再编写重复的 ...

  6. Hibernate框架之get和load方法的区别

    我们在学习Hibernate框架时,经常会进行修改,删除操作,对于这些操作,我们都应该先加载对象,然后在执行或删除的操作,那么这里Hibernate提供了两种方法按照主键加载对象,也就是我要说的get ...

  7. Hibernate中Session之get和load方法的真正区别

    最近在学习SHH框架中的hibernate,对Session的get和load方法,有点混不清楚,不知道区别在哪,或者对它们的区别感触不深.所以百度了一下,结果问题来了.百度的结果和实际测试的结果出入 ...

  8. 关于HttpSession 和 Hibernate框架中 session异同点的简单解析

    快速理解: HttpSession中的session是一个容器用来盛基于会话机制的信息. 比喻:我把钱放进银行的保险柜里. 解析:我的钱就是我的信息,ID等 银行的保险柜就是session容器. Hi ...

  9. Hibernate,Session方法使得java对象进入持久化状态;持久化对象特征

    以下情况java对象进入持久化状态: session.save()方法把临时对象转变为持久化对象. session.load()和session.get()方法得到的对象总是处于持久化状态. sess ...

随机推荐

  1. Setuptools 【Python工具包详解】

    什么是setuptools setuptools是Python distutils增强版的集合,它可以帮助我们更简单的创建和分发Python包,尤其是拥有依赖关系的.用户在使用setuptools创建 ...

  2. 【总结】java基础

    一.基础语法 1.数据类型 (1)基本数据类型:byte(1字节,-27~27-1),short(2字节,-215~215-1),int(4字节,-231~231-1),long(8字节,-263~2 ...

  3. 老板下了死命令,要把日志系统切换到Logback

    Log4j 介绍过了,SLF4J 也介绍过了,那接下来,你懂的,Logback 就要隆重地登场了,毕竟它哥仨有一个爹,那就是巨佬 Ceki Gulcu. 就在昨天,老板听我说完 Logback 有多牛 ...

  4. 秒懂Dubbo接口(原理篇)

    引言 背景 单一应用架构 垂直应用架构 分布式服务架构 流动计算架构 为什么要用 Dubbo? 什么是分布式? 为什么要分布式? Dubbo 的架构 Dubbo 的架构图解 Dubbo 工作原理 Du ...

  5. .net 实现签名验签

    本人被要求实现.net的签名验签,还是个.net菜鸡,来分享下采坑过程 依然,签名验签使用的证书格式依然是pem,有关使用openssl将.p12和der转pem的命令请转到php实现签名验签 .ne ...

  6. 用Matlab对导出的数据进行可视化

    我这里是MapReduce导出的数据,MapReduce导出的数据中,Key和Value之间用制表符分隔的,可以直接作为表格型数据进行操作,复制一下导出的数据 1. 首先在Matlab工作区创建一个元 ...

  7. Python调用Java(基于Ubuntu 18.04)

    最近实习,需要使用Python编程,其中牵涉到一些算法的编写.由于不熟悉Python,又懒得从头学,而且要写的算法自己之前又用Java实现过,就想着能不能用Python调用Java.经过查找资料,方法 ...

  8. Java集合系列-HashSet

    原创文章,转载请标注出处:https://www.cnblogs.com/V1haoge/p/10755431.html 一.概述 HashSet是基于哈希实现的set集合,其实它底层是一个value ...

  9. 为什么layui表单不显示?

    当你使用表单时,Layui会对select.checkbox.radio等原始元素隐藏,从而进行美化修饰处理.但这需要依赖于form组件,所以你必须加载 form,并且执行一个实例.值得注意的是:导航 ...

  10. wait()系统调用分别演示在父子进程

    废话不多说开代码 在父进程调用wait() #include<stdio.h> #include<unistd.h> #include<sys/wait.h> in ...