hibernate 查询全部数据的三种方法
1、Query对象
使用Query对象需要写hql语句,使用hql语句操作的是实体类和属性。
用于查询全部的hql语句:from 实体类名称
例:String hql = "from UsersEntity";//准备hql语句
Query query = session.createQuery(hql);//创建Query对象
List<UsersEntity> usersEntitys = query.list();//调用Query方法进行查询
Query query = session.createQuery(hql);//创建Query对象
List<UsersEntity> usersEntitys = query.list();//调用Query方法进行查询
2、Criteria对象
使用这个对象查询全部数据,不需要写语句,直接调用方法实现即可
例:Criteria criteria=session.createCriteria(UsersEntity.class);//创建Criteria对象,此方法需要给出实体类名称
List<UsersEntity> usersEntitys=criteria.list();//调用Criteria方法进行查询
List<UsersEntity> usersEntitys=criteria.list();//调用Criteria方法进行查询
3、SQLQuery对象
使用这个对象查询全部数据,需要写底层sql。
例:SQLQuery sqlQuery=session.createSQLQuery("select * from users");//创建SQLQuery对象,需要传入底层sql语句
sqlQuery.addEntity(UsersEntity.class);//返回的list是数组,需要将其转换成实体类对象
List<UsersEntity> usersEntitys=sqlQuery.list();//调用方法进行查询
sqlQuery.addEntity(UsersEntity.class);//返回的list是数组,需要将其转换成实体类对象
List<UsersEntity> usersEntitys=sqlQuery.list();//调用方法进行查询
flush-强制提交刷新session
clear--清除session
evict(Obj)将对象实例从session缓存清除
session.flush() 不是必须调用的
session.close()是必须调用的
session.clear()写在flush后面
解释session.flush()的调用牵扯到事务,首先我们知道在执行事务之前都会将AutoCommit设置为false【手动提交方式,因为默认是true自动提交的】 当AutoCommit为false时 我们执行完事务就要调用到session.flush();session.clear();一切处理完后我们要close掉当前的这个session但是当我们不做事务操作的时候 我们就没必要去调用session.flush()和session.clear()。直接session.close()就OK 因为这时close会默认调用一次session.flush()。如果使用了ThreadLocal那么就要在close方法里处理一下ThreadLocal。session.flush()的作用是将数据库与缓存中的数据同步 当session.clear()后才会引起缓存数据变化方式一:基于实体类属性
对于实体的PO类,有2个要求:
1,必须继承Serializable接口
2,必须重写equals()方法和hashcode()方法(个人认为不是必须重写,只要其默认hascode能唯一的确定任何一个Person类即可,当然使用联合主键字段firstname和lastname重写equals()方法和hashcode()方法后,即可通过firstname和lastname唯一确定一个Person类,更符合数据库中firstname和lastname做为联合主键的设计)
分类:
08.Java
, 10.N+Hibernate
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架