前言:最近在重新了解hibernate,看到SessionFactory时对session与JDBC中的connection起了疑问。便查了下资料,以下代码两图来自黑马培训的资料,感谢讲课老师及黑马;其他来自百度文库,链接:https://wenku.baidu.com/view/35de88ff846a561252d380eb6294dd88d1d23d5e.html

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;/*** Hibernate的入门案例* @author jt**/
public class HibernateDemo1 {@Test// 保存客户的案例public void demo1(){// 1.加载Hibernate的核心配置文件Configuration configuration = new Configuration().configure();// 手动加载映射// configuration.addResource("com/itheima/hibernate/demo1/Customer.hbm.xml");// 2.创建一个SessionFactory对象:类似于JDBC中连接池SessionFactory sessionFactory = configuration.buildSessionFactory();// 3.通过SessionFactory获取到Session对象:类似于JDBC中ConnectionSession session = sessionFactory.openSession();// 4.手动开启事务:Transaction transaction = session.beginTransaction();// 5.编写代码Customer customer = new Customer();customer.setCust_name("王西");session.save(customer);// 6.事务提交transaction.commit();// 7.资源释放session.close();sessionFactory.close();}
}

使用 hibernate 的关键就是创建 session 对象,有了session 对象,我们才能进行各种各样的操作。
session 与 connection 是多对一的关系,每个 session 都有一个与之对应的connection ,一个 connection 不同时刻可以供多个 session 使用。
我们想要对数据库进行操作的时候通过 session 就可以了。我们只要调用
session 中的各种方法(save() 、 update() 、 delete() 、 createQuery() 等),就可以简单便捷的达到操作数据库的目的。

获得 session 的方法
1.获得 session 的方式
想要得到 session 对象就需要先得到 sessionFactory 。
sessionFactory 中有两个方法可以让我们获得 session 。分别是
(1) 、 openSession()
(2) 、 getCurrentSession()
openSession() 是可以直接使用的;
而 getCurrentSession() 需要在 hibernate.hbm.xml 文件中进行配置,
然后才可以使用。配置代码如下图:

2.两种方式获得 session 的区别
1 ·openSession 需要手动的关闭 session ,如果使用 openSession 而
没有手动关闭 session ,多次之后就会导致连接池的溢出;
而 getCurrentSession 获得的 session 在事务提交或者回滚之后就
会自动的关闭;
2 ·openSession 每次得到的都是新的 session 对象;
而 getCurrenSession 方法得到的 session 是单例的,也就是每次
得到的 session 对象是同一个对象。
3 ·openSession 中在获得了 session 之后就可以通过session.doWork() 方法获得 connection 对象;
getCurrentSession 中需要先打开事务,才能通过session.doWork() 方法获得 connection 对象.

hibernate中session 与JDBC中 connection分析相关推荐

  1. php中session时间,php中session过期时间的设置方法

    php中session过期时间的设置方法 发布时间:2020-04-22 10:21:19 来源:亿速云 阅读:140 作者:小新 今天小编给大家分享的是php中session过期时间的设置方法,相信 ...

  2. php中session总结,PHP5中Session总结(一)

    一. Session的配置与应用 1. bool session_start( void );          -- Initialize session data 2. $_SESSION[nam ...

  3. hibernate中session和sessionFactory的作用

    转载:https://blog.csdn.net/m0_37154839/article/details/79506466 https://www.cnblogs.com/baizhanshi/p/7 ...

  4. hibernate中session接口方法总结

    Session的save()和persist()方法 Session的save()方法使一个临时对象转变为持久化对象.它完成以下操作: (1)将临时对象加入到Session缓存中,使其进入持久化状态. ...

  5. 在Hibernate的session中同时有两个相同id的同类型对象,修改失败

    若在Hibernate的session中同时有两个相同id的同类型对象,修改会失败,报错:a different object with the same identifier value was a ...

  6. (继续搬)struts日期格式的转换以及hibernate中session的关闭在xml中的配置

    1.struts日期格式的转换package cn.sxx.utils;import java.text.ParseException; import java.text.SimpleDateForm ...

  7. 一口一口吃掉Hibernate(二)——别被世俗蒙蔽了双眼:Hibernate中Session之get和load方法的真正区别

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

  8. java session 生命周期_java之hibernate之session中对象的生命周期

    1. session是用来执行对象的crud操作,并且session是对象事务工厂.session是线程级别的,所以生命周期比较短. 2.session中对象的生命周期图: 3.session中对象的 ...

  9. php 类初始化 session判断,thinkphp3.x中session方法的用法分析

    本文实例讲述了thinkphp3.x中session方法的用法.分享给大家供大家参考,具体如下: 一.Session方法用于Session 设置.获取.删除和管理操作. Session 用于Sessi ...

  10. [转]JDBC中日期时间的处理技巧

    Java中用类java.util.Date对日期/时间做了封装,此类提供了对年.月.日.时.分.秒.毫秒以及时区的控制方法,同时也提供一些工具方法,比如日期/时间的比较,前后判断等. java.uti ...

最新文章

  1. Android/Java 单例使用总结
  2. 模式设计概述:代理者模式
  3. SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
  4. IAR stm8 调试时无法看到局部变量解决
  5. Page directive: illegal to have multiple occurrences of contentType with different values
  6. 算法竞赛中的时间复杂度选择——以最大连续和问题为例
  7. 【Elasticsearch】es mapper_parsing_exception
  8. k8s核心技术-Service概述_Service如何实现负载均衡_提供虚拟IP_以及Po的IP注册和发现---K8S_Google工作笔记0031
  9. spark streaming checkpointing
  10. 超级计算机用于挖矿,全球至少500台超级计算机都被用来比特币挖矿
  11. 稳压器及稳压二极管型号对照表
  12. Java开发工具 IntelliJ IDEA(idea使用教程,手把手教学)内容很全,一篇管够!!!
  13. 适用于商业的10款最佳Android应用模板
  14. Web3:开源文化下的技术创新
  15. html2canvas加上canvas2image保存网页为图片
  16. 计算机中安装杀毒软件 的作用,360杀毒软件的功能及其使用方法介绍
  17. 电脑桌面运维工程师考证
  18. poj--1625Censored!+AC自动机上的dp+大数
  19. thinkphp 5.1 swoole扩展websocket使用教程
  20. 个人认为最高效的学习方法【费曼学习法】

热门文章

  1. SQLSERVER备份事务日志的作用
  2. 小结Python的中文处理(转)
  3. [转载] 全本张广泰——第一回 开篇聊闲天 青楼是非多
  4. 4.15Day20加密模块,表格操作模块
  5. Cisco IOS Rootkit工具该怎么写
  6. MySQL/MariaDB数据库备份与恢复
  7. 《IS-IS网络设计解决方案》一导读
  8. opencv 重用代码块记录
  9. Server 2012 Log off 按键
  10. 关于oracle数据库分页的原理及实现