传智播客hibernate学习,Session的方法和关联映射

SSH笔记-管理Session和批量操作数据库 SSH笔记-管理Session和批量操作数据库(通过JDBC api 批量操作、通过session进行批量操作、通过statelesssession进行批量操作) 立即下载

    今天继续学习Heribernate,汤老师在Heribernate 原理上做了更深入的讲解,讲了Session的方法对Heribernate对象实例的三种状态进行转换,Heribernate实体间的映射关系,一对一,一对多。并举例进行讲解, 例子敲了一遍,加深理解。


Heribernate对象实例的三种状态之间通过Session的方法,可以进行转换。
Session的方法:save(persist), delete, get, load.
    update:update是把一个已经更改过的游离状态的对象变成持久状态。
    saveOrUpdate(merge):什么下情况添加什么情况下更新,这要根据unsaved-value属性的设置,该属性为TRUE时,则添加,该属性为false时,这为更新;
     使用save和saveOrUpdate方法时,如果被操作对象与另一个跟本session 关联的对象拥有相同的持久化标识(identifier),就会抛出一个异常:org.hibernate.NonUniqueObjectException。
      通常下面的场景会使用update()或saveOrUpdate():程序在第一个 session 中加载对象,接着把session关闭,该对象被传递到表现层,对   象发生了一些改动,该对象被返回到业务逻辑层最终到持久层,程序创建第二session调用第二个session的update()方法持久这些改动。   contains:Session是否包含某个对象(也是判断是否是持久状态);
   clear:清空一级缓存;
   flush:强制刷出(更新到数据库);
 load与get的区别主要在于返回结果的不同:
       get方法:如果找不到符合条件的纪录,返回null。
       load方法:返回的是一个代理对象。在第一次访问这些懒加载对象(代理对象)的属性(getId方法除外)时,hibernate 会初始化这些代理。这 时如果数据库中没有与之对应的记录,就会抛出如下的异常: org.hibernate.ObjectNotFoundException: No row with the given
 identifier exists: ...。
       如果Heribernate实体是final的,则load被调用时会马上发出一条select语句(即不能使用懒加载功能),所以推荐Heribernate实体类不是final的。


   关联映射:
  一对多与多对一映射:有两个类User与Group;Group类有属性: id:int, name:string;
  1,单向多对一:
      在User中增加属性group,并在User.hbm.xml中增加:
      <many-to-one name="group" column="groupId" (not-null="true")></many-to-one>
        使用代码:
        session.save(group);
        user.setGroup(group);
        session.save(user);
2,双向关联,一对多、多对一:
       在上一步的基础上:在Group中增加属性users:Set<User>;在
       Group.hbm.xml中增加:
         <set name="users">
             <key column="groupId"></key>
             <one-to-many class="User"/>
         </set> 
 <one-to-many>不需要定义任何字段,也不需要指定表名。
 <key>元素在父映射元素定义了对新表的连接,并且在被连接表中定义了一个外键引用原表的主键的情况下经常使用。其中column指的是外键字段的名称。 使用代码:1,第一步中的代码。或
       2:session.save(user);
          group.getUsers().add(user);
          session.save(group);
          // 这样要求groupId列允许空值.
在Set中不能添加重复的元素,是否重复是由hashCode和equals方法决定的。所以
要重写hashCode与equals方法:
hashCode:IF id==null THEN return super.hashCode。

 

基于外键的单向一对一。和单向多对一关联几乎一样,唯一的不同就是单向 一对一关联中的外键字段具有唯一性约束。在IdCard.hbm.xml中增加:<many-to-one name="userxx" unique="true" />(外键在哪张表中, many-to-one元素就在那个表相应实体的映射文件中)。
     使用代码:
       idCard.setUser(user);
       session.save(user);
       session.save(idCard);
   

传智播客ssh+ssm五大框架笔记 传智播客ssh+ssm五大框架笔记,hibernate框架开发2016版资料,mybatis+spring,Spring框架2016版资料,struts2框架2016版资料 立即下载

相关推荐

传智播客SSH(struts2 spring2.5 hibernate3.5) ppt 课件

传智播客SSH(struts2 spring2.5 hibernate3.5) ppt 最新课件,帮你快速搞定框架技术!

Hibernate总结(四)--session的产生方式和一对多的关系映射

一、session的创建 Session是由SessionFactory负责创建的,而SessionFactory的实现是线程安全的,多个并发的线程可以同时访问一个SessionFactory并从中获取Session实例,但Session不是线程安全的。 每次openSession,产生的都是一个新的session,相当于创建一个新的连接。但是有很多时候,并不希望这样。比如在淘宝购物,

苍穹之上倚天长鸣的博客 718

java Heribernate-lib

这是Heribernate中的libjar包,有了它才能开发Heribernate

BPM与OA有什么区别

选择BPM吧,有人觉得你“打肿脸充胖子”;选择OA嘛,好像“行业大哥”们已经在BPM的路上越走越远…… 企业在信息化建设的过程中难免遭遇BPM和OA之争,难难难!其实,OA和BPM从某种意义上来说并不具备可比性, 但是在中国特殊的信息化环境下,两者在企业观感上却造成了一定的争议,关系是什么、异同点是什么、分别适合怎样的企业、管理范畴是什么…… 这些问题的不明确,以及随着两款软件不断完善和创新...

conglinyu的专栏 4540

传智播客--ssh全套

传智播客--ssh全套

传智播客ssh框架

2016传智播客ssh框架文档

Hibernate学习笔记(四) — session的产生方式 与 一对多关系映射

一、session的创建 Session是由SessionFactory负责创建的,而SessionFactory的实现是线程安全的,多个并发的线程可以同时访问一个SessionFactory并从中获取Session实例,但Session不是线程安全的。 每次openSession,产生的都是一个新的session,相当于创建一个新的连接。但是有很多时候,并不希望这样。比如在淘宝购物,

NotPerfect-EOF 2277

传智播客ssh

传智播客ssh

内外网映射需要注意的问题(session和ip地址有hash关系)

  session和ip地址有hash关系,尤其在内外网替换不完全的时候,比如退出使用192.168.13.99/hb_phonebank_web/logout, 登录使用http://116.236.184.238:8006/hb_phonebank_web/,这时session对不上,明显的就是退出没有清掉,重新登录没有 换用户名       外网前端请求的要是外网地址(使用...

yuhui666666的博客 1444

王道考研计算机网络课件全解析:从零搭建你的知识框架(附B站视频+PPT下载)

本文全面解析王道考研计算机网络课程的核心知识体系,从OSI七层模型到TCP/IP四层架构,详细讲解物理层、数据链路层、网络层、传输层和应用层的关键技术。提供高效学习路径、实战案例和常见误区警示,帮助考生系统构建计算机网络知识框架,适合计算机考研备考者参考学习。

leaf8的博客 564

保姆级教程:2025新版JavPlayer 3.01整合修复版安装配置全流程(N卡/A卡/CPU通用)

本文提供2025新版JavPlayer 3.01整合修复版的保姆级安装配置教程,涵盖N卡、A卡和CPU环境。详细讲解硬件要求、分步安装流程、显卡优化配置及超分辨率模型选择,帮助用户高效完成视频修复任务。

weixin_42665255的博客 1889

Hibernate详解(1)——总体框架

Hibernate是一个持久化的框架,它对JDBC进行了轻量级的封装。对于源程序来说没有侵入性。能让我们通过操作实体关系模型来操作数据库。大大减轻了sql语句的书写,事务的处理,查询结果的管理等数据库操作。下面是一张hibernate的基本知识点的框架。总体来说hibernate还是比较好学习的,但是需要深入和优化性能还是需要仔细的研究。 ...

web开发自学 160

银河麒麟服务器操作系统V10SP3 U盘安装中“基础软件仓库错误”的排查与修复指南

本文针对在无网络环境下使用U盘安装银河麒麟服务器操作系统V10SP3时,遇到的“基础软件仓库错误”问题,提供了详细的排查与修复指南。核心解决方案是通过进入救援模式,使用lsblk命令确定U盘实际设备路径,并在系统引导时手动添加inst.repo内核参数来指定安装源,从而绕过安装程序的自动探测故障,确保安装流程顺利进行。

ik67890123的博客 1197

传智播客java培训2010年4月24日hibernate学习

昨天只是总结了映射的多对一的关系,以及其中一点知识要点。今天hibernate的课程就结束了,今天的课,听是听懂了,但是大家都知识,写程序不是只是能听懂就行了,更多的是需要在实战中吸取经验,有好多好多的问题不是老师在课堂上能传授得完的,更多的是要去实战,一行一行的代码都要自己去敲,错误遇到了,要自己一心一意去排除,这样才能让自己的水平有所提升。但是即使是听,今天也算是让我大开眼界了,让我就

IT路漫漫 738

Android 11系统定制:如何彻底隐藏状态栏电池图标(RK3568实测)

本文详细解析了在Android 11系统上如何通过多维度修改实现状态栏电池图标的彻底隐藏,特别针对RK3568平台提供了实战指南。从系统UI架构解析到核心配置文件修改,再到进阶技巧与疑难排查,帮助开发者深度定制Android系统,满足特定场景需求。

weixin_29250573的博客 377

【YOLOV5-5.x 源码讲解】整体项目文件导航

前言 这个项目是github的开源项目,YOLOV5:https://github.com/ultralytics/yolov5,目前已经有14.1k个Star 和 4.9k 个Folk了,非常的火。下面我会给大家逐个的文件介绍这个项目中的所有代码,希望能帮到大家。 我下的2021年4月12日更新的v5.0版本,整个项目我做了一点点的文件位置的改变,也加了点自己在其他论文中学到的tricks,不过我没有删除它源码任何一个代码。下面我会按文件逐个函数的进行攻破,因为我本人也还是研一,肯定会有很多的不足,希望大

qq_38253797的博客 6万+

传智播客java培训2010年4月25日hibernate学习

今天放假,但基于,现在的状况根本不是放假的时机,所以,放假是别人的假期,与我无缘,谁叫我老大不小,天智不慧呢!努力是我求知路上相信的唯一真理。重新做了一遍一对多,多对一双向的关联的练习,以求在其中能发现点什么理解的规律,果不其然,总是有收获得。他仅仅是将多对一和一对多的组合。首先,要清楚的是,他们在表中的联系仅仅就是一个外键。具体的实现方法在JAVA类中以及配置文件中。一方有多方的

IT路漫漫 755

如何根据芯片手册时序图编写驱动程序

如何根据芯片手册时序图编写驱动程序 对于电子开发者来说,刚刚拿到一个芯片,常用的芯片可以参考网上的例程来做深入了解,对于一个不常用的芯片来说,Datasheet几乎是使用芯片的唯一的资料,所以根据Datasheet时序图写出对应的驱动程序就尤为重要。 本文根据一个简单的例子来阐述根据时序图来编写对应的程序过程。旨在讲解对于初学者应该怎么利用芯片的时序图编写符合要求的底层驱动程序(老鸟请跳过)。 下载芯片的Datasheet,(个人常用http://www.21icsearch.com/)如..

weixin_36447711的博客 1万+

传智播客—hibernate关系映射 三(转载)

1).级联添加: 我们有设置order的映射文件的many-to-one,在此我们也必须设置customer的set元素: &lt;set name="orders" cascade="save-update" lazy="false"&gt;     &lt;key&gt;&lt;column name="cid"&gt;&lt;/column&gt;

Big JavaEye 172

ESP32-C3微型9轴感知模块的硬件工程实践

在嵌入式系统小型化趋势下,低功耗微控制器与多传感器融合成为智能终端的基础技术路径。其核心原理在于芯片能效比、射频合规性与电源噪声抑制的协同优化,技术价值体现在降低认证门槛、提升EMC鲁棒性及保障MEMS传感器精度。典型应用场景包括可穿戴设备、微型无人机姿态控制和工业边缘传感节点。本文围绕ESP32-C3平台展开,深入解析QFN封装选型逻辑、同步降压电源设计、LSM9DS1九轴校准策略等关键环节,覆盖FCC/CE认证规避、USB-C接口EMC防护等高频工程痛点。

weixin_42607969的博客 369

某讯天御滑块验证码逆向实战:从参数解析到环境对抗

本文详细解析了某讯天御滑块验证码的逆向工程实战技巧,从关键参数解析到浏览器环境模拟对抗。重点介绍了collect、eks等参数的逆向思路,以及如何通过puppeteer等工具补全环境检测,帮助开发者有效突破验证码防护。文章还提供了常见错误解决方案和性能优化建议,是验证码逆向领域的实用指南。

weixin_29325007的博客 440

传智播客hibernate学习,开发环境配置

      今天学习Heribernate 是汤阳光老师讲的,汤老师先讲一个Heribernate实际应用中的例子,通过例子讲解了Heribernate的实现原理,如何使用和使用它带来的好处。还有具体的如何配置环境,编写配置文件,Hibernate对象实例的三种状态。并对一般这三种状态的命名进行了修正。下面来介绍一下主要内容。     配置环境,可以把Heribernate/lib中的ja

TuiRoger的专栏 950

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

herbernate

herbernate起源:在讲herbernate框架定义之前,我们先来了解一下EJB,它是SUN的J2EE中的一套规范,并且规定了一系列的API用来实现把EJB概念转换成EJB产品。,也是sun的JavaEE服务器端组件模型,它的设计目标与核心应用是部署分布式应用程序。简单来说就是把已经编写好的程序(即:类)打包放在服务器上执行。它分为Session Bean (会话 bean,包括有状态与无状

lu93it的博客 2739

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Hibernate的简介和Hinbernate的简单模拟实现

Hibernate的出现和Hinbernate的简单模拟实现 2013年4月14日,继续学习Hibernate框架 1 概念 Hibernate是一种免费的开源的Java语言下的对象关系映射解决方案 Hibernate 有个在.NET Framework 上的实现版本,称为 NHibernate 1.1 为什么出现Hibernate l 阻抗不匹配 l 如果有对象数据库,h...

编程语言小筑 241

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: 传智播客hibernate学习,开发环境配置
下一篇: 传智播客bbs项目,解决mysql中文乱码问题
TuiRoger
博客等级 码龄19年 48粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值