Hibernate——(3)主键生成策略持久化类的三种状态

一 持久化类

1.持久化:内存对象--->数据库(硬盘)Hibernate持久化的框架

持久化类:Java对象与数据库中的表建立映射关系            Hibernate就称为持久化类(Java类+映射文件)

2.编写规则:

二 主键生成策略

1.主键分类:

代理主键更合理

2.生成策略

测试:

  1. //测试主键生成策略
  2. public class Demo {
  3. @Test
  4. //保存客户
  5. public void fun1(){
  6. //1 获得session
  7. Session session = HibernateUtils.openSession();
  8. //2 控制事务
  9. Transaction tx = session.beginTransaction();
  10. //3执行操作
  11. Customer c = new Customer();
  12. c.setCust_name("王东");
  13. session.save(c);
  14. //4提交事务.关闭资源
  15. tx.commit();
  16. session.close();
  17. }
  18. }

increment     单线程(数据库中的表不能是自增用的是Hibernate的自增)

  1. public class Demo {
  2. @Test
  3. //保存客户
  4. public void fun1(){
  5. //1 获得session
  6. Session session = HibernateUtils.openSession();
  7. //2 控制事务
  8. Transaction tx = session.beginTransaction();
  9. //3执行操作
  10. Customer c = new Customer();
  11. c.setCust_name("联想");
  12. session.save(c);
  13. //4提交事务.关闭资源
  14. tx.commit();
  15. session.close();
  16. }
  17. @Test
  18. //保存客户
  19. public void fun2(){
  20. //1 获得session
  21. Session session = HibernateUtils.openSession();
  22. //2 控制事务
  23. Transaction tx = session.beginTransaction();
  24. //3执行操作
  25. Customer c = new Customer();
  26. c.setCust_name("苹果");
  27. session.save(c);
  28. //4提交事务.关闭资源
  29. tx.commit();
  30. session.close();
  31. }
  32. }

两个线程都会执行此语句,查到相同的最大id  在存储的时候就会报错

 

三 持久化类的三种状态

1.三种状态:

瞬时态transient

无oid 无session管理的对象

有oid 有session管理的对象

有oid无session管理的对象

session管理:调session的方法把对象交给session管理

oid:唯一的标识,在DB中有主键id

  1. //测试对象的三种状态
  2. public class Demo {
  3. @Test
  4. //查看三种状态
  5. public void fun1(){
  6. //1 获得session
  7. Session session = HibernateUtils.openSession();
  8. //2 控制事务
  9. Transaction tx = session.beginTransaction();
  10. //3执行操作
  11. Customer c = new Customer(); // 没有id, 没有与session关联 => 瞬时状态
  12. c.setCust_name("联想"); // 瞬时状态
  13. session.save(c); // 持久化状态, 有id,有关联(返回id)下面直到session关闭之前的状态都是持久态
  14. //4提交事务.关闭资源
  15. tx.commit();
  16. session.close();// 游离|托管 状态, 有id , 没有关联
  17. }
  18. }

2.三种状态的转换:

持久态对象可以自动更新数据库

不需要调用session.update(obj)就可以自动更新数据库

原理:依赖了Hibernate的一级缓存

  1. @Test
  2. //三种状态特点
  3. // 持久化状态特点: 持久化状态对象的任何变化都会自动同步到数据库中.
  4. public void fun3(){
  5. //1 获得session
  6. Session session = HibernateUtils.openSession();
  7. //2 控制事务
  8. Transaction tx = session.beginTransaction();
  9. //3执行操作
  10. Customer c = session.get(Customer.class, 1l);//持久化状态对象
  11. c.setCust_name("微软公司");
  12. //4提交事务.关闭资源
  13. tx.commit();
  14. session.close();// 游离|托管 状态, 有id , 没有关联
  15. }

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/549279.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 二进制BinaryFormatter进行序列化与反序列化

原文链接:https://blog.csdn.net/e295166319/article/details/52790131 序列化又称串行化,是.NET运行时环境用来支持用户定义类型的流化的机制。其目的是以某种存储形成使自定义对象持久化,或者将这种对象从一个地方传输到另一个地方。 .NET框…

Algorithm学习笔记 --- 迷宫问题

版权声明&#xff1a;学习交流为主&#xff0c;未经博主同意禁止转载&#xff0c;禁止用于商用。 https://blog.csdn.net/u012965373/article/details/26376987 </div><link rel"stylesheet" href"https://csdnimg.cn/release/phoenix…

css资源网站收集推荐

非原创&#xff0c;来源网络。感谢原作者奉献如此精彩文章。原文地址&#xff1a;http://www.jianbitou.com/post/20_websites-learn-master-css.html1. A List Apart CSS Topics A List Apart是一个CSS优秀文章的收集网站&#xff0c;从1999年开始收集文章&#xff0c;关注最佳…

IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段/数字-如192.168.0.1/24是什么意思?

背景知识 IP地址 IP地址被用来给Internet上的电脑一个编号。大家日常见到的情况是每台联网的PC上都需要有IP地址&#xff0c;才能正常通信。我们可以把“个人电脑”比作“一台电话”&#xff0c;那么“IP地址”就相当于“电话号码”&#xff0c;而Internet中的路由器&#xff0…

思科CCNA第一学期期末考试答案

1 第 3 层头部包含的哪一项信息可帮助数据传输&#xff1f; 端口号 设备物理地址 目的主机逻辑地址 虚拟连接标识符 2 IP 依靠 OSI 哪一层的协议来确定数据包是否已丢失并请求重传&#xff1f; 应用层 表示层 会话层 传输层 3 请参见图示…

思科CCNA第二学期期末考试答案

1.关于数据包通过路由器传输时的封装和解封的叙述&#xff0c;下列哪三项是正确的&#xff1f;&#xff08;选择三项。&#xff09; 路由器修改 TTL 字段&#xff0c;将其值减 1。 路由器将源 IP 更改为送出接口的 IP。 路由器保持相同的源 IP 和目的 IP。 路…

关于xrdp的安装设置

参考链接http://linuxfan-linuxtips.blogspot.com/2010/03/get-xrdp-to-work-in-ubuntu.htmlhttp://chip.twbbs.org/blog/?p658http://www.mexlinux.com/how-to-install-xrdp-in-ubuntu/首先&#xff0c;你必须remove vnc4server&#xff0c;这个东西和这个软件有冲突sudo apt…

35-46集 中心极限定理、置信区间

第三十五集 中心极限定律   该定律是说随着样本n越来越大&#xff0c;这n个样本的m个均值会趋于正态分布。与大数定律的区别在于&#xff1a;大数定律描述的样本均值趋于总体均值&#xff0c;而中心极限定律描述的是样本均值的分布。 第三十六、七集 样本均值的抽样分布   …

AS3自制按钮通用代码

系统提供按钮不大适合现在的很多实用&#xff0c;很多都是MC做的&#xff0c;很多情况要些很多代码…… 代码 stop();addEventListener(MouseEvent.MOUSE_OVER,MouseOver);addEventListener(MouseEvent.MOUSE_UP,MouseOver);addEventListener(MouseEvent.MOUSE_DOWN,MouseDown)…

统计学(可汗学院视频62-81集笔记)

资料链接 本次统计学学习以网易云可汗学院公开课为主&#xff1a; 视频链接&#xff1a;http://open.163.com/special/Khan/khstatistics.html 并以《深入浅出统计学》为辅&#xff1a; 书籍链接&#xff1a;https://pan.baidu.com/s/1dCV6rrOWZU-deKxAoectGA </div…

可汗学院统计学笔记 42-81集

假设检验 假设检验是推论统计中用于检验统计假设的一种方法。而“统计假设”是可通过观察一组随机变量的模型进行检验的科学假说。一旦能估计未知参数&#xff0c;就会希望根据结果对未知的真正参数值做出适当的推论。统计上对参数的假设&#xff0c;就是对一个或多个参数的论述…

再谈js拖拽(一)

关于js拖拽早已是老生常谈&#xff0c;网上一搜一大坨&#xff0c;但是有很多并不是很完善&#xff0c;或者兼容性不够&#xff0c;或者功能不全&#xff0c;并且这样的东西还是自己写的好用。我打算在&#xff08;一&#xff09;中主要对js拖拽功能的注意点进行罗列&#xff0…

操作系统进程调度算法图解(FCFS、轮转、SPN、SRT、HRRN、反馈)

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 本文链接&#xff1a;https://blog.csdn.net/woshiwanghao_hi/article/details/13004507 FCFS: 先来先服务&#xff0c;也可以称为先进先出 轮转…

安装Ubuntu之后一定要安装Docky

2019独角兽企业重金招聘Python工程师标准>>> 安装Ubuntu之后一定要安装Docky&#xff0c;然后把面板隐藏&#xff0c;真是太漂亮了&#xff01; 图片太大&#xff0c;传不上来&#xff0c;传到百度上&#xff0c;又不让引用&#xff0c;还是百度看吧&#xff1a; 我…

操作系统中调度算法(FCFS、RR、SPN、SRT、HRRN)

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 本文链接&#xff1a;https://blog.csdn.net/xieminyao123/article/details/79116985 决策模式 决策模式说明选择函数在执行的瞬间的处理方式&a…

操作系统学习总结(超赞!!!)

我是技术搬运工,好东西当然要和大家分享啦.原文地址 操作系统基本特征 1. 并发 并发性是指宏观上在一段时间内能同时运行多个程序&#xff0c;而并行性则指同一时刻能运行多个指令。 并行需要硬件支持&#xff0c;如多流水线或者多处理器。 操作系统通过引入进程和线程&#xf…

操作系统的SPOOLING技术

SPOOLING技术&#xff08;Simultaneous Peripheral Operating On Line) 同时联机外围操作技术&#xff0c;它是关于慢速字符设备如何与计算机主机进行数据交换的一种技术&#xff0c;通常又称假脱机技术。 在多道程序环境下&#xff0c;利用多道程序中的一道或者两道程序来模拟…

独立磁盘冗余阵列:RAID

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 本文链接&#xff1a;https://blog.csdn.net/fsx2550553488/article/details/79819164 RAID RAID&#xff1a;独立磁盘冗余阵列&#xff08;Redun…

task2 EDA数据分析

目标 了解&#xff0c;验证数据集 了解变量关系&#xff0c;与预测值之间关系 数据处理、特征工程 数据探索性分析 EDA探索性数据分析 通过EDA可实现: 1. 得到数据的直观表现 2. 发现潜在的结构 3. 提取重要的变量 4. 处理异常值 5. 检验统计假设 6. 建立初步…

task2 EDA探索性数据分析

1、赛题数据赛题以预测二手车的交易价格为任务&#xff0c;数据集报名后可见并可下载&#xff0c;该数据来自某交易平台的二手车交易记录&#xff0c;总数据量超过40w&#xff0c;包含31列变量信息&#xff0c;其中15列为匿名变量。为了保证比赛的公平性&#xff0c;将会从中抽…