Hibernate基础入门2

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

Hibernate基础入门2

对象关系映射

多对一(Employee – Department)

<many-to-one name=”depart” column=”depart_id”/> 

一对多(Department-Employee)

<set name=”集合对象属性名”>
    =”外键名”/>
    =”集合放入的类名”/>
> 

一对一(Person – IdCard)

<id name=”id”>
    =”foreign”>name=”property”>person
>
<one-to-one name=” person” constrained=”true”/>

Original: https://www.cnblogs.com/xrwdgj/p/16299019.html
Author: 小人物大格局
Title: Hibernate基础入门2

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/592854/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • java: imap Receive Email

    java;gutter:true; /** * 版权所有 2022 涂聚文有限公司 * 许可信息查看: * 描述: * * 数据库:Ms SQL server 2019 * IDE…

    Java 2023年5月29日
    075
  • mybatis返回自增主键踩坑记

    背景 MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可…

    Java 2023年5月30日
    083
  • java 程序运行的基础知识【Java bytecode】

    每一个JVM线程来说启动的时候都会创建一个私有的线程栈。一个jvm线程栈用来存储栈帧,jvm线程栈和C语言中的栈很类似,它负责管理局部变量、部分运算结果,同时也参与到函数调用和函数…

    Java 2023年6月15日
    063
  • 戏说领域驱动设计(廿一)——领域服务

    实体对象和值对象都写完了,本想开始写资源仓库顺便把工作单元再搞搞。不过有一点麻烦的是我不太想把工作单元作为单独的一章来写,一是这东西网上相关的内容太多;二是有的时候使用Spirng…

    Java 2023年6月7日
    097
  • Spring Cloud认知学习(一):Spring Cloud介绍与Eureka使用

    Spring Cloud的介绍 微服务的介绍 Spring Cloud出现的原因: 常见场景: 微服务的优劣势: Spring Cloud版本问题 版本介绍 与Spring Boo…

    Java 2023年5月30日
    0154
  • Maven 3 从入门到入门

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月9日
    088
  • Mybatis完整版详解

    一、简介 1.什么是MyBatis MyBatis 是一款优秀的持久层框架 它支持自定义 SQL、存储过程以及高级映射。 MyBatis 免除了几乎所有的 JDBC 代码以及设置参…

    Java 2023年6月14日
    059
  • 并发编程之:Atomic

    大家好,我是小黑,一个在互联网苟且偷生的农民工。 在开始讲今天的内容之前,先问一个问题,使用int类型做加减操作是不是线程安全的呢?比如 i++ ,++i,i=i+1这样的操作在并…

    Java 2023年6月7日
    084
  • 错误记录:Can’t connect to MySQL server on xxx

    由于之前Django项目的mysql的3306端口直接映射到宿主机的3306端口最近安装的其他服务, 发现3306端口冲突, 就把原本Django项目的mysql服务的端口修改, …

    Java 2023年6月7日
    0109
  • java守护线程与非守护线程的区别

    守护线程与用户线程 用户线程:我们平常创建的普通线程。 守护线程:用来服务于用户线程;不需要上层逻辑介入 java线程分为守护线程和非守护线程,当java jvm检测主线程或其他子…

    Java 2023年5月29日
    063
  • vue-i18n 初体验

    vue-i18n 初体验 使用vue,如何国际化呢?采用 vue-i18n。(i18n,internationalization,i和n中间省略18个字符) vue-i18n 官网…

    Java 2023年6月5日
    082
  • 【Java分享客栈】SpringBoot线程池参数搜一堆资料还是不会配,我花一天测试换你此生明白。

    一、前言 首先说一句,如果比较忙顺路点进来的,可以先收藏,有时间或用到了再看也行;我相信很多人会有一个困惑,这个困惑和我之前一样,就是线程池这个玩意儿,感觉很高大上,用起来很fas…

    Java 2023年6月9日
    0100
  • 每日一问:讲讲 Java 虚拟机的垃圾回收

    昨天我们用比较精简的文字讲了 Java 虚拟机结构,没看过的可以直接从这里查看: 今天我们必须来看看 Java 虚拟机的垃圾回收算法是怎样的。不过在开始之前,我们一定得确定哪些是活…

    Java 2023年5月29日
    084
  • 超级常用的正则表达式

    &#x4E00;&#x3001;&#x6821;&#x9A8C;&#x6570;&#x5B57;&#x7684;&#…

    Java 2023年6月9日
    085
  • 01-MyBatisPlus简介

    一、简介 官网:http://mp.baomidou.com/参考教程:https://baomidou.com/pages/24112f/MyBatis-Plus(简称 MP)是…

    Java 2023年6月15日
    075
  • android studio的巨坑笔记

    前面写了两篇专门记录androidstudio的奇怪异常bug,但是塞不下了,又开一个新的,谷歌真是给力。 Build was configured to prefer setti…

    Java 2023年6月7日
    084
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球