hibernate中session 与JDBC中 connection分析
前言:最近在重新了解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分析相关推荐
- php中session时间,php中session过期时间的设置方法
php中session过期时间的设置方法 发布时间:2020-04-22 10:21:19 来源:亿速云 阅读:140 作者:小新 今天小编给大家分享的是php中session过期时间的设置方法,相信 ...
- php中session总结,PHP5中Session总结(一)
一. Session的配置与应用 1. bool session_start( void ); -- Initialize session data 2. $_SESSION[nam ...
- hibernate中session和sessionFactory的作用
转载:https://blog.csdn.net/m0_37154839/article/details/79506466 https://www.cnblogs.com/baizhanshi/p/7 ...
- hibernate中session接口方法总结
Session的save()和persist()方法 Session的save()方法使一个临时对象转变为持久化对象.它完成以下操作: (1)将临时对象加入到Session缓存中,使其进入持久化状态. ...
- 在Hibernate的session中同时有两个相同id的同类型对象,修改失败
若在Hibernate的session中同时有两个相同id的同类型对象,修改会失败,报错:a different object with the same identifier value was a ...
- (继续搬)struts日期格式的转换以及hibernate中session的关闭在xml中的配置
1.struts日期格式的转换package cn.sxx.utils;import java.text.ParseException; import java.text.SimpleDateForm ...
- 一口一口吃掉Hibernate(二)——别被世俗蒙蔽了双眼:Hibernate中Session之get和load方法的真正区别
最近在学习SHH框架中的Hibernate,对Session的get和load方法,有点混不清楚,不知道区别在哪,或者对它们的区别感触不深.所以百度了一下,结果问题来了.百度的结果和实际测试的结果出入 ...
- java session 生命周期_java之hibernate之session中对象的生命周期
1. session是用来执行对象的crud操作,并且session是对象事务工厂.session是线程级别的,所以生命周期比较短. 2.session中对象的生命周期图: 3.session中对象的 ...
- php 类初始化 session判断,thinkphp3.x中session方法的用法分析
本文实例讲述了thinkphp3.x中session方法的用法.分享给大家供大家参考,具体如下: 一.Session方法用于Session 设置.获取.删除和管理操作. Session 用于Sessi ...
- [转]JDBC中日期时间的处理技巧
Java中用类java.util.Date对日期/时间做了封装,此类提供了对年.月.日.时.分.秒.毫秒以及时区的控制方法,同时也提供一些工具方法,比如日期/时间的比较,前后判断等. java.uti ...
最新文章
- Android/Java 单例使用总结
- 模式设计概述:代理者模式
- SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
- IAR stm8 调试时无法看到局部变量解决
- Page directive: illegal to have multiple occurrences of contentType with different values
- 算法竞赛中的时间复杂度选择——以最大连续和问题为例
- 【Elasticsearch】es mapper_parsing_exception
- k8s核心技术-Service概述_Service如何实现负载均衡_提供虚拟IP_以及Po的IP注册和发现---K8S_Google工作笔记0031
- spark streaming checkpointing
- 超级计算机用于挖矿,全球至少500台超级计算机都被用来比特币挖矿
- 稳压器及稳压二极管型号对照表
- Java开发工具 IntelliJ IDEA(idea使用教程,手把手教学)内容很全,一篇管够!!!
- 适用于商业的10款最佳Android应用模板
- Web3:开源文化下的技术创新
- html2canvas加上canvas2image保存网页为图片
- 计算机中安装杀毒软件 的作用,360杀毒软件的功能及其使用方法介绍
- 电脑桌面运维工程师考证
- poj--1625Censored!+AC自动机上的dp+大数
- thinkphp 5.1 swoole扩展websocket使用教程
- 个人认为最高效的学习方法【费曼学习法】