Hibernate的 SessionFactory,Configuration,Query ,Criteria接口简介,及Query的查询方法

本文主要是介绍Hibernate的 SessionFactory,Configuration,Query ,Criteria接口简介,及Query的查询方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


关于SessionFactory接口

我们从SessionFactory工厂类中获取session实例,

事实上当我们的项目中只对应一个数据库时就不需要重复的创建session实例。
因为一个数据库对应一个session实例,SessionFactory在Hibernate中起到了一个缓冲区的作用,缓冲了一些
Hibernate自动生成的sql语句,一些映射数据和可能重复利用的数据。


所以我们可以将SessionFactory的实例放进static静态代码块中。 

  private static SessionFactory sf;static{Configuration config=new Configuration();config.configure();sf=config.buildSessionFactory();}


Configuration   接口   
 
加载默认的src/hibernate.cfg.xml配置文件(所有映射文件)之后创建工厂类SessionFactory


Transaction   事务接口
通过session对象来开启事务。数据库的操作成功离不开事务的开启~

当我们在hibernate.cfg.xml配置中加入了

 

 <property name="hibernate.show_sql">true</property> <!-- 控制台打印输出数据库sql语句 -->

如果控制台成功打印了数据库语句,而数据库没有成功插入的话就是没有执行事务。


Query接口

Query分为
主键查询
HQL查询
SQL查询



主键查询:
session.get(Employee.class, 1);    主键查询
session.load(Employee.class, 1);   主键查询 (支持懒加载)


HQL查询:
HQL查询与SQL查询区别:
SQL: (结构化查询语句)查询的是表以及字段;  不区分大小写。
HQL: hibernate  query  language 即hibernate提供的面向对象的查询语言
查询的是对象以及对象的属性。
区分大小写。

//HQL查询(不支持*)
Query q=session.createQuery("from employee");
return q.list();



本地SQL查询:

原生态的sql语句查询
(缺点: 不能跨数据库平台!)

SQLQuery sqlQuery= session.createSQLQuery("select * from employee").addEntity(Employee.class); 
List list=sqlQuery.list();
System.out.println(list);


Criteria接口
Criteria查询:
完全面向对象的查询。

Criteria criteria=session.createCriteria(Employee.class);//往里面添加条件criteria.add(Restrictions.eq("empId", 1));//查询全部List<Employee> list=criteria.list();System.out.println(list);

其他对数据库的操作:

 //将employ保存进数据库(具体操作,在上一篇关于hibernate的小例子中有讲解)

session.save(employ);    

  //对数据库进行更新操作(注意:这个必须设置主键的值,不然操作失败,报错)
 session.update(employ);   

 //保存或更新操作(设置了主键就是更新,没有就执行保存操作,不会报错)
 session.saveOrUpdate(employ);





这篇关于Hibernate的 SessionFactory,Configuration,Query ,Criteria接口简介,及Query的查询方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/539911

相关文章

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

【Tools】AutoML简介

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样                      🎵 方芳《摇太阳》 AutoML(自动机器学习)是一种使用机器学习技术来自动化机器学习任务的方法。在大模型中的AutoML是指在大型数据集上使用自动化机器学习技术进行模型训练和优化。

java面试常见问题之Hibernate总结

1  Hibernate的检索方式 Ø  导航对象图检索(根据已经加载的对象,导航到其他对象。) Ø  OID检索(按照对象的OID来检索对象。) Ø  HQL检索(使用面向对象的HQL查询语言。) Ø  QBC检索(使用QBC(Qurey By Criteria)API来检索对象。 QBC/QBE离线/在线) Ø  本地SQL检索(使用本地数据库的SQL查询语句。) 包括Hibern

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu

模拟实现vector中的常见接口

insert void insert(iterator pos, const T& x){if (_finish == _endofstorage){int n = pos - _start;size_t newcapacity = capacity() == 0 ? 2 : capacity() * 2;reserve(newcapacity);pos = _start + n;//防止迭代

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

SaaS、PaaS、IaaS简介

云计算、云服务、云平台……现在“云”已成了一个家喻户晓的概念,但PaaS, IaaS 和SaaS的区别估计还没有那么多的人分得清,下面就分别向大家普及一下它们的基本概念: SaaS 软件即服务 SaaS是Software-as-a-Service的简称,意思是软件即服务。随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴起的一种完全创新的软件应用模式。 它是一种通过Internet提供