Hibernate框架session的方法
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的方法的更多相关文章
- Hibernate(5)session的方法
1. Session缓存 Session缓存(Hibernate一级缓存),在 Session 接口的实现中包含一系列的 Java 集合, 这些 Java 集合构成了 Session 缓存.只要 Se ...
- 阅读Hibernate框架Session接口的源码的笔记
一.阅读Session接口的注释的理解.(看着注释翻译的,有些地方可能翻译的不太对,有疑问再看源文档) ①.Session的生命周期随着事务开始而开始,事务的结束而结束. 附原文:The lifecy ...
- Hibernate中Session.save()方法的返回值是什么
public Serializable save(Object object) Parameters: object - a transient insta ...
- Hibernate框架(一)——总体介绍
作为SSH三大框架之一的Hibernate,是用来把程序的Dao层和数据库打交道用的,它封装了JDBC的步骤,是我们对数据库的操作更加简单,更加快捷.利用Hibernate框架我们就可以不再编写重复的 ...
- Hibernate框架(一)总结介绍
作为SSH三大框架之一的Hibernate,是用来把程序的Dao层和数据库打交道用的,它封装了JDBC的步骤,是我们对数据库的操作更加简单,更加快捷.利用Hibernate框架我们就可以不再编写重复的 ...
- Hibernate框架之get和load方法的区别
我们在学习Hibernate框架时,经常会进行修改,删除操作,对于这些操作,我们都应该先加载对象,然后在执行或删除的操作,那么这里Hibernate提供了两种方法按照主键加载对象,也就是我要说的get ...
- Hibernate中Session之get和load方法的真正区别
最近在学习SHH框架中的hibernate,对Session的get和load方法,有点混不清楚,不知道区别在哪,或者对它们的区别感触不深.所以百度了一下,结果问题来了.百度的结果和实际测试的结果出入 ...
- 关于HttpSession 和 Hibernate框架中 session异同点的简单解析
快速理解: HttpSession中的session是一个容器用来盛基于会话机制的信息. 比喻:我把钱放进银行的保险柜里. 解析:我的钱就是我的信息,ID等 银行的保险柜就是session容器. Hi ...
- Hibernate,Session方法使得java对象进入持久化状态;持久化对象特征
以下情况java对象进入持久化状态: session.save()方法把临时对象转变为持久化对象. session.load()和session.get()方法得到的对象总是处于持久化状态. sess ...
随机推荐
- for循环使用体会
最近在看源码的时候看到了以下代码: Class[] var2 = componentClasses; int var3 = componentClasses.length; for(int var4 ...
- CF1336 Linova and Kingdom
题面 给定 n 个节点的有根树,根是 1 号节点. 你可以选择 k 个节点将其设置为工业城市,其余设置为旅游城市. 对于一个工业城市,定义它的幸福值为工业城市到根的路径经过的旅游城市的数量. 你需要求 ...
- Luogu P5087 数学
题意 给定一个长度为 \(n\) 的序列 \(a_i\),求出在这个序列中所有选出 \(k\) 个元素方案中元素的乘积之和. \(\texttt{Data Range:}1\leq n\leq 10^ ...
- 2.3 spring5源码系列---内置的后置处理器PostProcess加载源码
本文涉及主题 1. BeanFactoryPostProcessor调用过程源码剖析 2. 配置类的解析过程源码 3. 配置类@Configuration加与不加的区别 4. 重复beanName的覆 ...
- Spring MVC 9大组件概述
SpringMVC中的Servlet一共有三个层次,分别是HttpServletBean.FrameworkServlet和 DispatcherServlet.HttpServletBean直接继承 ...
- Serilog源码解析——使用方法
在上两篇文章(链接1和链接2)中,我们通过一个简易 demo 了解到了一个简单的日志记录类库所需要的功能,即一条日志有哪些数据,以及如何通过一次记录的方式将同一条日志消息记录到多个日志媒介中.在本文中 ...
- Java_数组, 懒得整理了 ---------------------> 未完, 待续
待续 public class TestArray { public static void main(String[] args) { String[] s1 = {"双儿", ...
- FullCalendar v5.3.2版本制作一个航班日历Demo
今天一个新需求是制作一个航班日历来订舱.然后我就各种找,最后找到FullCalendar,过程非常煎熬,网上例子大部分没用,大部分没有完整版.官网教程又不是很详细.搞了几天才彻底搞好这个航班日历,有需 ...
- 自定义MFC对话窗口的类名
默认情况下,MFC对话框的窗口类名为"#32770",如果想自定义窗口类名呢,需要两步: 1.修改rc文件 这一步需要直接编辑rc文件,使用任意记事本工具即可,找到窗口的相关定义, ...
- Qt基础之菜单栏
本篇介绍Qt菜单栏相关操作,分为三部分:1.菜单栏相关的类介绍:2.系统菜单的生成和响应:3.弹出菜单的生成和响应:菜单栏通常只有以QMainWindow为基类的程序中才用到,以QWidget为基类的 ...