hibernate 查询全部数据 三种方法

六开彩预测内部

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方法进行查询

六开彩预测内部2、Criteria对象

使用这个对象查询全部数据,不需要写语句,直接调用方法实现即可

例:Criteria criteria=session。createCriteria(UsersEntity。class);//创建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();//调用方法进行查询

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做为联合主键的设计)

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。

我要收藏
赞一个
踩一下
分享到

分享
评论
六开彩预测内部
香港现场开奖报码 最准平特一肖官网资料 天线宝宝论坛资料 天线宝宝高手论坛香港挂 最准平特一肖一码 看跑狗图解法一肖中特 香港本港台现场报码 2019年马会全年资料 看图解平特图 特马免费大公开