一.特点

  • 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接口☆☆☆☆☆的更多相关文章

  1. JAVA面向对象-----接口与类、接口之间的关系

    接口与类.接口之间的关系 大家之前都知道类与类之间的关系继承,那么接口与类之间又是怎样子的关系呢? 接口与类之间是实现关系.非抽象类实现接口时,必须把接口里面的所有方法实现.类实现接口用关键字impl ...

  2. 数据结构-List接口-LinkedList类-Set接口-HashSet类-Collection总结

    一.数据结构:4种--<需补充> 1.堆栈结构:     特点:LIFO(后进先出);栈的入口/出口都在顶端位置;压栈就是存元素/弹栈就是取元素;     代表类:Stack;     其 ...

  3. 列举Java中常用的包、类和接口

    常用的类: BufferedReader ,BufferedWriter FileReader    ,FileWirter String      ,Integer Date        ,Cla ...

  4. java ee开发常用类和接口

    1.javax.Validation接口,做mvc传入数据验证用 2.javax.servlet接口 3.javax.datasource接口 4.javax.session接口 5.javax.ht ...

  5. JavaWeb学习——Servlet相关的接口和类

    JavaWeb学习——Servlet相关的接口和类 摘要:本文主要学习了Servlet相关的接口和类. Servlet的接口和类 三种方式 实现Servlet有三种方式: 实现javax.servle ...

  6. java类,接口浅谈

    一般类,抽象类,接口的使用场景: 类;共同的特征和行为的抽取和封装 接口:标准,规范(功能的扩展)         需要对某个类进行功能的扩展,就让某个类实现这个接口,抽取出来称为接口   内部类: ...

  7. C# 为什么用接口实例化一个实现该接口的类?

    这是多态的体现. 首先接口不能实例化的. 实现接口的类 实例 = new 实现接口的类()// 这样用不好吗? //这样已经不是好不好的问题了,这样的话,要接口有什么用?//用接口就是让实例和实现类的 ...

  8. Spring MVC学习------------核心类与接口

    核心类与接口: 先来了解一下,几个重要的接口与类. 如今不知道他们是干什么的没关系,先混个脸熟,为以后认识他们打个基础. DispatcherServlet   -- 前置控制器 HandlerMap ...

  9. Java基础进阶:多态与接口重点摘要,类和接口,接口特点,接口详解,多态详解,多态中的成员访问特点,多态的好处和弊端,多态的转型,多态存在的问题,附重难点,代码实现源码,课堂笔记,课后扩展及答案

    多态与接口重点摘要 接口特点: 接口用interface修饰 interface 接口名{} 类实现接口用implements表示 class 类名 implements接口名{} 接口不能实例化,可 ...

随机推荐

  1. 【JZOJ6273】欠钱

    description analysis 读懂题就可知\(b\)的收益即为\(a\)到\(b\)这一条链上边权的最小值 那么就是动态维护一个森林,询问链上最小值,同时必须满足儿子走向父亲 明显\(LC ...

  2. 校园商铺-2Logback配置与使用-2Logback配置

    logback配置文件加载顺序 logback:程序在运行的时候,会按照一定的顺序去加载logbook相关的配置文件. 如果我们在配置里面制定了logbackConfigurationFile这个属性 ...

  3. Java基本语法.part02

    变量 变量的概念: 内存中的一个存储区域 该区域有自己的名称(变量名)和类型(数据类型) Java中每个变量必须先声明,后使用 该区域的数据可以在同一类型范围内不断变化 使用变量注意: 变量的作用域: ...

  4. BZOJ 1010 (HNOI 2008) 玩具装箱

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MB Submit: 12665 Solved: 5540 [Submit][S ...

  5. 训练计划Day2

    Day2:线段树(可持久化),平衡树(splay,treap),并查集,树链剖分,动态树,树状数组,点分治(可持久). 线段树模板 //区间最大,and,or #include <cstdio& ...

  6. 关于C++ const 的全面总结 分类: ubuntu 2014-12-03 21:03 72人阅读 评论(0) 收藏

    C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助. Const 是C++中常用的类型修饰符,常类型是指使用类 ...

  7. centos7 将home目录空间扩容到根目录

    [root@localhost ~]# umount /home/ [root@localhost ~]# lvremove /dev/mapper/centos-home Do you really ...

  8. Tomcat点击项目名称,加载一个action请求

    <meta http-equiv="refresh" content="0;url=index.action">

  9. ReadyAPI创建功能测试的多种方法

    原文:ReadyAPI创建功能测试的多种方法 声明:如果你想转载,请标明本篇博客的链接,请多多尊重原创,谢谢! 本篇使用的 ReadyAPI版本是2.5.0 在ReadyAPI中有多种方法可以创建功能 ...

  10. Foundation框架系列-NSArray

    NSArray常用API 数组字符串指定字符拼接 // 将数组中的元素以separator拼接返回字符串 比如@[@"a=1", @"b=2"] 以separa ...