07.Hibernate常用的接口和类---Session接口☆☆☆☆☆
一.特点
Session是在Hibernate中使用最频繁的接口。也被称之为持久化管理器。它提供了和持久化有关的操作,比如添加、修改、删除、加载和查询实体对象
Session 是应用程序与数据库之间交互操作的一个单线程对象,是 Hibernate 运作的中心
Session是线程不安全的
所有持久化对象必须在 session 的管理下才可以进行持久化操作
Session 对象有一个一级缓存,显式执行 flush 之前,所有的持久化操作的数据都缓存在 session 对象处
持久化类与 Session 关联起来后就具有了持久化的能力
二.注意
Session
不是线程安全的。应避免多个线程使用同一个Session实例Session是轻量级的,它的创建和销毁不会消耗太多的资源。应为每次客户请求分配独立的Session实例
Session有一个缓存,被称之为Hibernate的一级缓存。每个Session实例都有自己的缓存
三.常用的方法
1.save
/**
* 测试session.save();
*/
@Test
public void TestSave(){ // 创建session对象
Session session = HibernateUtils.openSession(); // 开启事务
Transaction tr = session.beginTransaction(); // 编写保存代码
Customer c = new Customer();
// c.setCust_id(cust_id); 已经自动递增
c.setCust_name("xx");
c.setCust_mobile("110"); // 保存客户
session.save(c); // 提交事务
tr.commit(); // 释放资源
session.close();
}
2.get(Class,id)
/**
* 测试Session.get(class,id)
*/
@Test
public void TestGet(){ // 创建session对象
Session session = HibernateUtils.openSession(); // 开启事务
Transaction tr = session.beginTransaction(); //查询数据
Customer c = session.get(Customer.class, 1L); System.out.println(c.toString()); // 提交事务
tr.commit(); // 释放资源
session.close();
}
3.delete(obj)
/**
* 测试Session.delete(obj)
* 凡是删除或修改,都先查询在操作
*/
@Test
public void TestDelete(){ // 创建session对象
Session session = HibernateUtils.openSession(); // 开启事务
Transaction tr = session.beginTransaction(); //查询数据
Customer c = session.get(Customer.class, 1L); //删除数据
session.delete(c); // 提交事务
tr.commit(); // 释放资源
session.close();
}
4.update(obj)
/**
* 测试Session.update(obj)
* 凡是删除或修改,都先查询在操作
*/
@Test
public void TestUpdate(){ // 创建session对象
Session session = HibernateUtils.openSession(); // 开启事务
Transaction tr = session.beginTransaction(); //查询数据
Customer c = session.get(Customer.class, 2L); //修改数据
c.setCust_name("YYYY"); //删除数据
session.update(c); // 提交事务
tr.commit(); // 释放资源
session.close();
}
5.saveOrUpdate(obj)
/**
* 测试Session.saveOrUpdate(obj);
* 凡是删除或修改,都先查询在操作
*/
@Test
public void TestSaveOrUpdate(){ // 创建session对象
Session session = HibernateUtils.openSession(); // 开启事务
Transaction tr = session.beginTransaction(); //查询数据
Customer c = session.get(Customer.class, 2L); //修改数据
c.setCust_name("zzzz"); //删除数据
session.saveOrUpdate(c); // 提交事务
tr.commit(); // 释放资源
session.close();
}
6.CreateQuery();
/**
* 测试Session.createQuery();
* 查询表
*/
@Test
public void TestQuery(){ // 创建session对象
Session session = HibernateUtils.openSession(); // 开启事务
Transaction tr = session.beginTransaction(); //创建查询接口
Query qr = session.createQuery("from Customer"); List<Customer> list = qr.list();
for (Customer customer : list) {
System.out.println(customer.toString());
} // 提交事务
tr.commit(); // 释放资源
session.close();
}
07.Hibernate常用的接口和类---Session接口☆☆☆☆☆的更多相关文章
- JAVA面向对象-----接口与类、接口之间的关系
接口与类.接口之间的关系 大家之前都知道类与类之间的关系继承,那么接口与类之间又是怎样子的关系呢? 接口与类之间是实现关系.非抽象类实现接口时,必须把接口里面的所有方法实现.类实现接口用关键字impl ...
- 数据结构-List接口-LinkedList类-Set接口-HashSet类-Collection总结
一.数据结构:4种--<需补充> 1.堆栈结构: 特点:LIFO(后进先出);栈的入口/出口都在顶端位置;压栈就是存元素/弹栈就是取元素; 代表类:Stack; 其 ...
- 列举Java中常用的包、类和接口
常用的类: BufferedReader ,BufferedWriter FileReader ,FileWirter String ,Integer Date ,Cla ...
- java ee开发常用类和接口
1.javax.Validation接口,做mvc传入数据验证用 2.javax.servlet接口 3.javax.datasource接口 4.javax.session接口 5.javax.ht ...
- JavaWeb学习——Servlet相关的接口和类
JavaWeb学习——Servlet相关的接口和类 摘要:本文主要学习了Servlet相关的接口和类. Servlet的接口和类 三种方式 实现Servlet有三种方式: 实现javax.servle ...
- java类,接口浅谈
一般类,抽象类,接口的使用场景: 类;共同的特征和行为的抽取和封装 接口:标准,规范(功能的扩展) 需要对某个类进行功能的扩展,就让某个类实现这个接口,抽取出来称为接口 内部类: ...
- C# 为什么用接口实例化一个实现该接口的类?
这是多态的体现. 首先接口不能实例化的. 实现接口的类 实例 = new 实现接口的类()// 这样用不好吗? //这样已经不是好不好的问题了,这样的话,要接口有什么用?//用接口就是让实例和实现类的 ...
- Spring MVC学习------------核心类与接口
核心类与接口: 先来了解一下,几个重要的接口与类. 如今不知道他们是干什么的没关系,先混个脸熟,为以后认识他们打个基础. DispatcherServlet -- 前置控制器 HandlerMap ...
- Java基础进阶:多态与接口重点摘要,类和接口,接口特点,接口详解,多态详解,多态中的成员访问特点,多态的好处和弊端,多态的转型,多态存在的问题,附重难点,代码实现源码,课堂笔记,课后扩展及答案
多态与接口重点摘要 接口特点: 接口用interface修饰 interface 接口名{} 类实现接口用implements表示 class 类名 implements接口名{} 接口不能实例化,可 ...
随机推荐
- bzoj1568 Blue Mary
题意:P:加入一条一次函数.Q:询问x位置的最大函数值. 标程: #include<bits/stdc++.h> using namespace std; ; int q,x,n; dou ...
- SpringBoot使用拦截器/ Servlet/ Filter
一.SpringBoot中使用拦截器 使用SpringMVC的拦截器,需要定义好拦截器,然后通过配置文件文件,对其进行注册 而在SpringBoot项目中,之前在配置文件中配置的内容,现在体现在一个类 ...
- 如何在CRichEditCtrl控件中直接读如RTF格式的文件(这个是通过流的方式来读取文件)
如何在CRichEditCtrl控件中直接读如RTF格式的文件 Inserting an RTF string using StreamIn ------------------------- ...
- Astyle 快速入门,常用指令
--style=java -n -p -c !E astyle是一个命令行工具,命令语法很简单: astyle [options] < original > Beauti ...
- day 51 阿里iconfont的使用
阿里iconfont的使用 1. 找到阿里巴巴图标库 2.找到图标 3.搜索你想要的图标 4.将图标添加到购物车 5.点击右上角的购物车按钮,我这里添加了两个. 6.提示你登陆,不需要花钱,找其中 ...
- javaSpring学习总结day_02
使用注解注入: 1.用于创建bean对象 @Component: 作用:相当于配置了一个bean标签 位置:类上面 属性:value,含义是bean的id,当不写时,有默认值,默认值是当前类的短名,首 ...
- ASP.Net调整允许上传文件的大小
1.用户上传视频文件注意:调整允许上传文件的大小:ASP.Net为了防止过大的http恶意请求阻塞网站,所以限定了每次上传文件最大4M,asp.net1.1中把用户上传的文件先放到内存中,2.0后如果 ...
- 洛谷P4514 上帝造题的七分钟
P4514 上帝造题的七分钟 题目背景 裸体就意味着身体. 题目描述 "第一分钟,X说,要有矩阵,于是便有了一个里面写满了000的n×mn×mn×m矩阵. 第二分钟,L说,要能修改,于是便有 ...
- 跟我一起使用create-react-app脚手架搭建vw-layout解决方案
之前也是看过大漠的vw适配Vue-cli,我自己写H5,还有使用vue做项目的时候,会搭建大漠博客中的那一套. 现在在github上面,看见了一位博主使用create-react-app也是用vw适配 ...
- 【BZOJ4805】欧拉函数求和
题面 Description 给出一个数字N,求\(\sum\limits_{i=1}^n\varphi(i)\)i,1<=i<=N Input 正整数N.N<=2*10^9 Out ...