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,一经查实,立即删除!

相关文章

技术有什么用?

最近在CTO俱乐部的一个讨论分享,关于技术和创新的作用: 技术向底层延伸,应该是科技,技术向上层延伸,应该是应用,如果单纯把技术看作工具,编码,实现或一种生存的手段,那就…

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…

Cookies和Session(二)

一、理解Session机制&#xff1a;Session是一种用于服务器端状态管理的机制&#xff0c;服务器使用一种键值对的结构来保存信息。当程序需要为某个客户端的请求创建一个Session的时候&#xff0c;服务器首先检查这个客户端的请求里是否已包含了一个Session标识 - 称为 Session …

(与运算)、|(或运算)、^(异或运算)的本质理解

按位与运算符&#xff08;&&#xff09; 参加运算的两个数据&#xff0c;按二进制位进行“与”运算。 运算规则&#xff1a;0&00; 0&10; 1&00; 1&11; 即&#xff1a;两位同时为“1”&#xff0c;结果才为“1”&#xff0c;否则为0 例如&#xff1a;3…

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;关注最佳…

《计算机算法设计与分析》题目汇总

Github源码地址&#xff1a; https://github.com/hlk-1135/Data-Structures-and-Algorithms 递归与分治&#xff1a; 电路布线问题有重复元素的排列问题集合划分问题半数集和半数单集循环日程赛矩阵连乘问题最长公共子序列问题排列的字典序问题字典序问题 动态规划&#xff1…

教你如何窃取网络信息

随着网络业的迅速发展&#xff0c;网络安全问题日趋行严重&#xff0c;******活动日益猖獗&#xff0c;******技术成为人们关注的焦点。在因特网上&#xff0c;***站点随处可见&#xff0c;***工具可以任意下载&#xff0c;对网络的安全造成了极大的威胁。所以&#xff0c;随着…

子网划分,主机号,网络号计算

这是在做网络题时总结的一些经验和见解&#xff0c;略显粗糙&#xff0c;主要是记一下常用的ABC3类地址和相关的子网号&#xff0c;主机号的计算 ip地址 在主机或路由器中存放的IP地址&#xff08;IPv4&#xff09;都是32位的二进制代码。它包含了网络号&#xff08;net-id&…

不要用偏执毁掉一个产业

不要用偏执毁掉一个产业 近日&#xff0c;李强先生利用中科院科技政策所网络信息安全联合课题组发布的《网络信息安全形势报告》&#xff0c;又在到处散布&#xff1a;“受此影响&#xff0c;很多‘站长’重操旧业&#xff0c;大批淫秽色情手机WAP网站死灰复燃。”的信息&#…

划分子网例题详解

划分子网例题详解(网络基础考试题目)1&#xff0c;假设取得网络地址200.200.200.0 &#xff0c;子网掩码为255.255.255.0。现在一个子网有100台主机&#xff0c;另外4个子网有20台主机&#xff0c;请问如何划分子网&#xff0c;才能满足要求。请写出五个子网的子网掩码、网络地…

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

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

jquery ui tabs详解(中文) 【转载】

1 属性1.11 ajaxOptions,当选项卡加载内容时&#xff0c;添加一个ajax选项。只有ajax时&#xff0c;添加的ajax选项才起作用。默认值为null。上面的例子中&#xff0c;添加了beforeSend和success两个选项。ajax还有一些选项请参考jquery ajax&#xff0c;这里不做详解。。。1.1…

数据库操作:添加、插入、更新语句

SQL常用命令使用方法&#xff1a; (1) 数据记录筛选&#xff1a; sql"select * from 数据表 where 字段名字段值 order by 字段名 [desc]" sql"select * from 数据表 where 字段名 like %字段值% order by 字段名 [desc]" sql"select top 10 * from 数…

领域驱动设计的简略设计步骤

首先&#xff0c;需要根据需求建立一个初步的领域模型&#xff0c;至少要识别出领域对象和领域对象之间的关系&#xff08;可以是没有方向的关联关系&#xff09;。这些领域对象只应该放在领域层中。如果存在应用职责&#xff0c;可以识别出应用类。它们用来协调领域对象&#…

Struts2中Action访问Servlet API的三种方法

在通常的web开发中Request和Response对象比较常见&#xff0c;但在Struts2框架中由于Action能与JSP页面进行数据交互&#xff0c;所以通常都不会用到这两个对象。如果想在Struts2程序中用到这两个对象&#xff0c;也有解决方法 Struts2的Action并未直接与任何Servlet API耦合&a…

JavaScript 经典代码大全2

1.让浏览器窗口永远都不出现滚动条。 <body style"overflow-x:hidden;overflow-y:hidden">或<body style"overflow:hidden"> 或<body scrollno> 2&#xff0c;没有水平滚动条 <body style"overflow-x:hidden"> 3&am…

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

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

电视剧潜伏的真正结局

李崖没有死&#xff0c;潜伏真正的结局其实是这样的&#xff1a;  李涯没有死。这是个秘密&#xff0c;余则成不知道&#xff0c;站长吴敬中知道&#xff0c;因为这是个阴谋。李涯坠楼后&#xff0c;立刻被秘密送到了天津陆军医院&#xff0c;医生保住了他的命&#xff0c;但…

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

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