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接口名{} 接口不能实例化,可 ...
随机推荐
- 最大流任务调度+离散化——hdu2883
思想就是把时间段离散化,然后用个点来表示一段时间 #include<iostream> #include<cstdio> #include<cstring> #in ...
- System.Drawing.Imaging.ImageFormat.cs
ylbtech-System.Drawing.Imaging.ImageFormat.cs 1.程序集 System.Drawing, Version=4.0.0.0, Culture=neutral ...
- 海量数据解决思路之Hash算法
海量数据解决思路之Hash算法 一.概述 本文将粗略讲述一下Hash算法的概念特性,里边会结合 分布式系统负载均衡 实例对Hash的一致性做深入探讨.另外,探讨一下Hash算法在海量数据处理方案中 ...
- Linux 后台运行python .sh等程序,以及查看和关闭后台运行程序操作
1.运行.sh文件 直接用./sh 文件就可以运行,但是如果想后台运行,即使关闭当前的终端也可以运行的话,需要nohup命令和&命令. (1)&命令 功能:加在一个命令的最后,可以把这 ...
- Mysql优化系列之索引性能
实际上,前面的数据类型和表结构设计优化不能算优化,只能算规范,也就是说在设计表的时候,应该且必须做到这些 索引是sql优化的核心部分,在<高性能Mysql>中单独抽出一章讲,也印证了其重要 ...
- 06_mybatis关系映射
1.数据库表分析 表与表之间的业务关系: 在分析表与表之间的业务关系时需要建立 在某个业务意义基础上去分析; 先分析数据级别之间有关系的表之间的业务关系; usre和orders: use ...
- 03_mybatis配置文件详解
1. SqlMapConfig.xml mybatis全局配置文件SqlMapConfig.xml,配置内容如下: *properties(属性) setting(全局配置参数) typeAliase ...
- scrapy爬虫框架爬取招聘网站
目录结构 BossFace.py文件中代码: # -*- coding: utf-8 -*-import scrapyfrom ..items import BossfaceItemimport js ...
- 执行sql查询,并查看语句执行花费时间
declare @d datetimeset @d=getdate() select * from A PRINT '[语句执行花费时间(毫秒)]'+LTRIM(datediff(ms,@d,getd ...
- Django中static文件的引入
1. 在django project中创建 static文件夹 2.settings.py中配置要在 STATIC_URL = '/static/' 下边 STATICFILES_DIRS = [ ...