hibernate中session 与JDBC中 connection分析
发布日期:2021-10-17 09:34:34 浏览次数:2 分类:技术文章

本文共 2051 字,大约阅读时间需要 6 分钟。

前言:最近在重新了解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中Connection Session 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 对象.

转载地址:https://blog.csdn.net/s_156/article/details/103801544 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:hibernate中uuid和native等主键生成策略
下一篇:从蒙到入门——JavaEE完整体系架构

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年03月26日 17时18分20秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

全球CT影像20秒诊断,阿里云为新冠AI辅助诊断系统加速 | 凌云时刻 2019-04-27
Kafka从上手到实践 - 庖丁解牛:Producer | 凌云时刻 2019-04-27
智能制造的灾备问题如何解决? | 凌云时刻 2019-04-27
Code Review 是一场苦涩但有意思的修行 | 凌云时刻 2019-04-27
Kafka从上手到实践 - 庖丁解牛:Consumer | 凌云时刻 2019-04-27
Kafka从上手到实践 - Kafka CLI:Topic CLI & Producer CLI | 凌云时刻 2019-04-27
进阶之路:深入解读 Java 堆外内存 | 凌云时刻 2019-04-27
Kafka从上手到实践 - 实践真知:搭建单机Kafka | 凌云时刻 2019-04-27
Kafka从上手到实践 - Kafka CLI:Consumer CLI & Producer CLI | 凌云时刻 2019-04-27
Kafka从上手到实践 - Kafka CLI:Reseting Offset & Config CLI | 凌云时刻 2019-04-27
开源流媒体服务器:为何一定得再撸个新的 | 凌云时刻 2019-04-27
浙江大学公共管理学院与阿里云计算有限公司达成合作 | 凌云时刻 2019-04-27
机器学习笔记(十):梯度下降 | 凌云时刻 2019-04-27
2020的迷之骗局:从瑞幸退市到老干妈炒鹅 | 凌云时刻 2019-04-27
机器学习笔记(二十):逻辑回归(2) 2019-04-27
SpringCloud 应用在 Kubernetes 上的最佳实践(二):部署篇 (开发部署) 2019-04-27
机器学习笔记(二十一):决策边界 2019-04-27
机器学习笔记(二十二):逻辑回归中使用模型正则化 2019-04-27
踩着七彩祥云来接你的人不一定是意中人,也可能是阿里云 2019-04-27
5分钟完成业务实时监控系统搭建,是一种什么样的体验? 2019-04-27