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不能检测到。

最新文章

  1. linux下epoll实现机制
  2. dedecms /member/reg_new.php SQL Injection Vul
  3. matlab求解相关系数
  4. csharp: get Web.Services WebMethod
  5. UEditor上传功能
  6. C++类的运用 和 三大函数
  7. 修改tomcat浏览器地址栏图标
  8. hdu1045
  9. Tomcat 连接池详解
  10. IO代码记忆
  11. Tomcat服务器简单测试jsp文件和html文件
  12. ajax和jquery使用技巧
  13. .NET开发微信小程序-Template模块开发
  14. JAVA获取客户端请求的当前网络ip地址(附:Nginx反向代理后获取客户端请求的真实IP)
  15. Vue.js 2.x:组件的定义和注册(详细的图文教程)
  16. 【Gym 100812C】Story of Princess (走完图所有边)
  17. Spark共享变量(广播变量、累加器)
  18. day14 迭代器和生成器
  19. 新建虚拟机_WIN7 32位系统
  20. es6模块 nodejs模块和 typescript模块

热门文章

  1. [C/C++基础知识] main函数的参数argc和argv
  2. CSS 面试题总结
  3. CSS3渐变效果工具
  4. 有关placeholder在ie9中的一点折腾
  5. fetch,终于认识你
  6. PhantomJS,隐身浏览器
  7. 前端面试题整理——HTML/CSS
  8. C#委托、多播委托极简案例,一看就懂
  9. java中程序,进程和线程的区别
  10. 数据库基础知识详解三:MVCC、范式以及表连接方式