Hibernate基础语义

 

  • Configuration

 

Configuration类负责管理Hibernate的配置信息,Hibernate运行时需要获取一些底层的信息。如:数据库URL,数据库用户,数据库密码,数据库驱动类,数据库适配器等;

当我们调用:

 

new Configuration().configure()

 

 Hibernate会根据当前的CLASSPATH找到hibernate.cfg.xml(Hibernate.properties)并将其加载到内存中,作为后面操作的基础配置;

Configuration类一般只有在获取SessionFactory时需要涉及,当SessionFactory实例创建之后,由于配置的基本信息已经由Hibernate绑定在返回的SessionFactory之中,因此,一般情况下无需再对其进行操作!

 

  • SessionFactory

 

SessionFactory负责创建session实例,可以通过Configuration实例构建SessionFactory:

 

new Configuration().configure().buildSessionFactory()

 

 Configuration实例会根据当前数据库配置信息,构造SessionFactory实例并返回,SessionFactory一旦构造完毕,即被赋予特定的配置信息;之后的Configuration实例对象不会影响到已经创建的SessionFactory实例!

如果需要改变SessionFactory实例,就需要从Configuration实例重新构建一个SessionFactory实例,同理,如果应用中需要访问多个数据库,那么针对每个数据库都应该建立想对应的SessionFactory实例;

SessionFactory中保存着数据库配置的所有映射关系,同时也负责维护当前的二级缓存和StatementPool,由此可见,SessionFactory的创建过程会很复杂且代价高昂,所有我们在系统设计中应充分的考虑到SessionFactory的重用策略,SessionFactory采用了线程安全设计,可由多个线程并发调用,大多数情况下,一个应用中针对一个数据库共享一个SessionFactory就可以;

 

  • Session

 

Session是Hibernate持久化操作的基础,Hibernate的Session与Web中的HttpSession并没有任何关系,Hibernate Session之与Hibernate就像JDBC Connection与JDBC之间的关系;

Session是Hibernate持久化管理器的核心,通过了很多持久化方法,我们可以根据这些方法完成对象的增删改查(CRUD);

Save():

 

		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		Tuser tUser = new Tuser();
		tUser.setName("keith");
		session.save(tUser);
		session.getTransaction().commit();

 

 输出的SQL:

 

Hibernate: insert into  tUser(uName) values(?)

 

 Get():

 

Tuser tUser = (Tuser) session.get(Tuser.class, 1);

 

 输出的SQL:

 

Hibernate: 
    select  tuser0_.uId as uId0_0_, tuser0_.uName as uName0_0_  from   tUser tuser0_  where  tuser0_.uId=?

 

 Delete():

 

		Tuser tUser = (Tuser) session.get(Tuser.class, 1);
		session.delete(tUser);

 

 输出的SQL:

 

Hibernate: select   tuser0_.uId as uId0_0_,tuser0_.uName as uName0_0_   from   tUser tuser0_  where   tuser0_.uId=?
Hibernate: delete  from   tUser where   uId=?

删除的操作还采用HQL方式:

 

		String hql = "delete Tuser where id = 2";
		Query query = session.createQuery(hql);
		query.executeUpdate();

 

 输出的SQL:

 

Hibernate: delete   from   tUser where   uId=2

 

 Hibernate3中我们必须通过Query或Criteia接口进行数据查询:

Query接口:

 

		String hql = "from Tuser where uName like ?";
		Query query  = session.createQuery(hql);
		query.setParameter(0, "keith");
		
		List list = query.list();
		Iterator iterator = list.iterator();
		while (iterator.hasNext()) {
			Tuser tUser = (Tuser) iterator.next();
			System.out.println(tUser.getuName()+"  "+tUser.getuId());
		}

 

 输出SQL:

 

Hibernate: select   tuser0_.uId as uId0_,tuser0_.uName as uName0_ from   tUser tuser0_  where  tuser0_.uName like ?

输出结果: keith 3

 

 

Criteria接口:

 

		Criteria criteria  = session.createCriteria(Tuser.class);
		criteria.add(Expression.eq("uName", "keith"));
		List list = criteria.list();
		
		Iterator iterator = list.iterator();
		while (iterator.hasNext()) {
			Tuser tUser = (Tuser) iterator.next();
			System.out.println(tUser.getuName()+"  "+tUser.getuId());
		}

 

 输出SQL:

 

Hibernate: select  this_.uId as uId0_0_,this_.uName as uName0_0_  from   tUser this_  where  this_.uName=?

 输出结果:keith  3

 

 

Query和Criteria作为Hibernate数据查询接口,都提供了对查询条件的封装机制,两者之间的不同之处在于:Query面向HQL和Native SQL,而Criteria则提供了面向对象的查询模式;

OpenFoam实用技巧——starccm网格高效转换openfoam格式全解析 本文详细解析了如何利用OpenFOAM官方工具`ccm26toFoam`,将STAR-CCM+生成的高质量网格高效、稳定地转换为OpenFOAM格式。内容涵盖从STAR-CCM+正确导出网格、执行转换命令、解读转换日志,到转换后关键的边界条件修复与网格质量检查等全流程,旨在帮助用户规避常见错误,实现无缝工作流衔接。 阅读详情

相关推荐

fNIRS 公开数据集整理

关注“心仪脑”查看更多脑科学知识的分享。 关键词:数据整理、fNIRS 之前我们向大家推送了 Public Neuroscience Dataset 系列主题的第一期:《EEG公开数据集》,我们同时意识到大家对于神经科学公开数据集的需求。本期是该系列主题的第二期,我们在延续第一期初衷的基础上,整理了功能性近红外光谱(fNIRS)技术的公开数据集。 fNIRS 是一种非侵入性、便携且价格低廉的光学神经成像技术,它具有可观的空间和时间分辨率。因fNIRS技术问世较EEG晚了许多,所以应用此技术开展研究发.

psybrain的博客 4272

深入浅出hibernate学习笔记 基础语义

fendou4533的专栏 838

泛微ecology9 利用字段值动态控制明细表显示与隐藏

本文详细介绍了在泛微ecology9中,如何利用WfForm.bindFieldChangeEvent监听字段变化,结合jQuery动态控制明细表显示与隐藏的实战方法。通过五步操作,可实现根据字段值(如报销类型)智能切换明细表,提升表单交互体验与开发效率,并确保PC与移动端完美兼容。

7z8x2c4v6b9的博客 585

【Hibernate】基础语义

【回顾】     在上篇博客中,我们通过简单地保存用户数据实例,学习了如何进行Hibernate配置,从而建立实体类与数据库表的映射关系,在不用写执行语句的情况下,实现对数据库表的操作。     本篇博客,将回到Hibernate的具体配置,了解一下配置中的一些基础语义。 【基础】 1. Configuration     Configuration类负责管理Hibernat

Dream it Possible 775

WPS接入DeepSeek,实现AI辅助功能

总的来说,借助 WPS 中宏功能与 DeepSeek 大模型的结合,文档处理、内容创作和数据分析等任务都能更加智能化、自动化。这不仅大幅提升了工作效率,也为办公场景带来了全新的智能化办公体验。

运维老生常谈 3805

第六节 旅烨cms实战练习 -2021.03.11

第六节 旅烨cms实战练习 -2021.03.11 前期使用win10里小皮搭建旅烨cms,以为自己的各项配置有问题,但是小皮能够正常带动DVWA,始终带动不了旅烨cms。 后来与其他安全人员交流,发现win7可以正常运行旅烨cms。 所以目前为何出现问题尚不清楚 1.环境搭建 win7+小皮 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nOSTEFUw-1615475228402)(C:\Users\LuXian\AppData\Roaming\Typora\typora

lyx3429的博客 572

Hibernate 基础语义

基础语义 Configuration:负责管理Hibernate的配置信息--加载hibernate.cfg.xml文件至内存,作为后续操作基础配置--获取SessionFactory。 Configuration config = new Configuration().configure(); Configuration config = new Configuration().config...

DCTM + SAP 155

斗罗大陆叙事体系与战斗系统设计解析

在文学创作与游戏设计中,世界观构建和战斗系统设计是两大核心技术要素。世界观作为故事发生的背景框架,需要融合东西方文化元素并建立量化标准,如《斗罗大陆》中武魂觉醒与魂环等级体系。战斗系统则需突破简单数值对抗,发展出武魂特性、魂技组合与环境互动的三维体系,其中魂导器技术的引入展现了科技与魔法的创新融合。这些设计原理在RPG游戏开发、网络文学创作等领域具有广泛应用价值,特别是对需要长期运营的IP作品,完善的系统设定能有效支撑剧情延展与商业化开发。本文以现象级作品为例,剖析其武魂拟态理论和魂师工业化构思如何成就经典

weixin_29291069的博客 250

Hibernate(三)结构-基础语义和事务

一、基础语义 核心: ConfigurationSessionFactorySession 二、Configuration Configuration类负责管理Hibernate的配置信息,Hiber运行时需要获取一些底层实现基本信息 1.数据库URL 2.数据库用户 3.数据库用户密码 4.数据库JDBC驱动 5.数据库dialect,用于对

changhenshui1990的博客 340

弘玑RPA进阶攻略

01.弘玑RPA产品概要。02.设计器的安装与卸载。03.设计器特性与使用。

长安诗社社长@-梁瀚文- https://github.com/HevnChin https://gitee.com/HevnChin 3646

【笔记篇】Davinci Configurator BswM模块

AUTOSAR BSWM模块配置介绍

weixin_47571898的博客 1534

Hibernate(四)结构-基础语义和事务

一、基础语义 核心: Configuration SessionFactory Session 二、Configuration Configuration类负责管理Hibernate的配置信息,Hiber运行时需要获取一些底层实现基本信息 1.数据库URL 2.数据库用户 3.数据库用户密码 4.数据库JDBC驱动 5.数据库dialect,用于对特定的数据库提供支持...

weixin_34381666的博客 82

RHCA III之路---EX436-1

由于ha这门课有大量命令需要在3个节点上同步执行.如果执行history会出现前面数字,复制多行会有些麻烦.lab环境是nodea,nodeb,nodec 考试环境是node1,node2,node3。就可以快速将历史命令实现可多行复制,当然也可以用awk进行分割,个人喜好随意。技巧只能加快答题速度,对考试得分帮助不大。确认3个红框内容一致,且没报错即可。再执行一个histrory。3个node节点上运行。这样就能1次复制3行。

Q先生 1002

Hibernate 基础语义2007-09-02 17:37

Hibernate 基础语义2007-09-02 17:37 基础语义 Configuration:负责管理Hibernate的配置信息--加载hibernate.cfg.xml文件至内存,作为后续操作基础配置--获取SessionFactory。Co

chenqi19831112的专栏 559

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Atitit.hibernate体系结构大总结

Atitit.hibernate体系结构大总结 1.4.1hibernate基础语义 80 4.1.1configuration80 4.1.2sessionfactory81 4.1.3session81 2.hibernate动态数据库配置,多数据库配置 作者::老哇的爪子Attilax艾龙,EMAIL:146651981...

weixin_30248399的博客 67

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Hibernate基础

 第一部分:Hibernate基础语义   Configuration conf = new Configuration().configure();   调用后会自动寻找hibernate.cfg.xml并将其加载到内存   SessionFactory sessionFactory = conf.buildSessionFactory();   根据Configuratio

段中华的专栏 420

Hibernate框架基础——Hibernate入门

Hibernate入门Hibernate介绍Hibernate是一个基于jdbc的开源的持久化框架,是一个优秀的ORM实现,它很大程度的简化了dao层编码工作。Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 在分层结构中处于持久化层,封装对数据库的访问细节,使业务逻辑层更专注于实现业务逻辑。 Hibernate的主页为:http://www.hibe

李阿昀的博客 5万+

springboot之hibernate基础

springboot之hibernate

FOREVER_DO 1512

Hibernate基础知识

hibernate是处于持久层的。是对jdbc的包装 POJO对象 轻量级框架的特点:没有侵入性。 Oracle TopLink,JDO,Apache OJB ,EJB(CMP); java是单继承的。 EJB(JPA持久化的规范) Weblogic ibaits——sql映射

Emily的博客 491
上一篇: Hibernate代码初解
下一篇: Hibernate O/R映射
keithJava
博客等级 码龄16年 2粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值