HQL与Criteria

         HQL(Hibernate Query Language)-官方推荐面向对象的查询语言,与SQL不同,HQL中的对象名是区分大小写的(除了JAVA类和属性其他部分不区分大小写);HQL中查的是对象而不是表,并且支持多态;HQL主要通过Query来操作,Query的创建方式:

Query q = session.createQuery(hql);
from Person
from User user where user.name=:name
from User user where user.name=:name and user.birthday < :birthday

        Criteria是一种比HQL更面向对象的查询方式;Criteria的创建方式:

Criteria crit = session.createCriteria(DomainClass.class);
//简单属性条件如:
criteria.add(Restrictions.eq(propertyName, value)),
criteria.add(Restrictions.eqProperty(propertyName,otherPropertyName))

        uniqueResult方法:当session.createQuery(“from xxx where cardid=‘xxx’”).uniqueResult();返回的结果只有一个对象时,可以使用uniqueResult()得到该对象。但是,如果结果是多条,使用该方法就会抛出异常。

对象状态

  • 瞬时(transient):数据库中没有数据与之对应,超过作用域会被JVM垃圾回收器回收,一般是new出来且与session没有关联的对象。
  • 持久(persistent):数据库中有数据与之对应,当前与session有关联,并且相关联的session没有关闭,事务没有提交;持久对象状态发生改变,在事务提交时会影响到数据库(hibernate能检测到)。
  • 脱管/游离(detached):数据库中有数据与之对应,但当前没有session与之关联;脱管对象状态发生改变,hibernate不能检测到。

 

 

作者:|小人物大格局|,原文链接: https://www.cnblogs.com/xrwdgj/p/16299019.html

文章推荐

Java并发(十一) - -线程五种状态与六种状态

06、HSMS协议介绍

nodejs 入门基本操作

Node + Express 后台开发 —— 上传、下载和发布

iOS APP启动广告实现方式 与 APP唤端调用

Java SpringBoot 加载 yml 配置文件中字典项

v-if与v-show造成部分元素丢失的问题——v-if复用元素问题

systemctl 命令设置开机自启动失败

json-diff简单使用

从零搭建react+ts组件库(封装antd)

详解SQL操作的窗口函数

聊一聊容器暂停退出