028_CoreAPI_对象三种状态
星期一, 一月 04, 2016 15:07
上节课问题:
opensession 和getcurrentsession这两种分式不能混用。
两种session拿到的不是同一个。
session是一个接口,拿到的具体的实现类不是一个。
session接口
查下hibernate api文档
在哪里
不在distribution
hibernate官网上找,hibernate api
扒网站
http://blog.sina.com.cn/s/blog_673be8c40100rum3.html
hibernate 3.2api 自己下载
文档里
org.hibernate.session
被JBOSS收购(卖文档)被red hat收购
在学习jdbc的时候要写 try catch finally
存在概念:
1.只用hibernate时,要写try catch finally
2.hibernate在和spring一起使用的时候,不用写try catch finally
讲到spring的时候再说。
看一些接口:
org.hibernate.session
hibernate的几种状态
1.public Serializable save(Object object)
throws HibernateException
Persist the given transient instance, first assigning a generated identifier.
1.将teacher类
进行设置一个id为主键
(原来是联合主键)
2.在测试类中
增加测试类中的三种状态方法
TestSave3Status()
@Test
public void TestSave3Status(){
Teacher t = new Teacher();
//因为id设置的自动生成,所设置不设置是一样的
t.setName("t2");
t.setTitle("ccc");
t.setBirthdate(new Date());
t.setYourWifeName("yourWifeName1");
t.setZhicheng(ZhiCheng.A);
Session session = sf.getCurrentSession();
//在hibernate中执行操作要在一个事务里面
session.beginTransaction();
session.save(t);
System.out.println("-----------");
System.out.println(t.getId());
session.getTransaction().commit();
}
没有手动设置id,在save()后,进行获取t.getId()。
打印结果:
1
对象有三种状态的区别
1.Transient
2.Persistent
3.Detached
基本的解释:
1.基本
Teacher在new后,是Transient。
save()方法,可以把Transient变为Persistent。
2.三种状态的解释:
1.这个对象刚new出来,设了其他值,没有设置id,这个时候称为Transient
2.当你调用了save()或是saveorupdate()后,变为Persistent,这种状态是有id的。
3.把这个session给colse()了,这时候就变成Detached
---------这三种状态还是不好理解的,在三种状态和其他方法混用的时候,n多的细节。
孙卫琴比较老了,annotation没有。这么去学的话,会觉得非常头大。
---------如果这么去学,会不好学;在实际的学习中,
记得这些方法是什么用,在实际工作的时候,实验一下,能用就用,不能用算了。
推荐的方法是实践,不是背。
3.区别主要有两点:
1.有没有id -->Transient
2.在数据库中有没有id
3.在内存里有没有id
4.解释save()方法:
4.1session:
1.session是内存中的一个对象;
2.session里缓存了对象的id,session里面有个map,
map里面有key是id,这value是对象的引用。
4.2缓存:
内存中的一块区域,里面放着可以提高读取效率的引用或者对象
-------提高效率。
4.3由于调用save()方法,用了insert语句,
commit后,调用数据库里有了key这条记录了,内存也有,
id也有,这时候是Persistent。
close了,key这个对象还有,已经脱离了session的管理了,
这时候是Detached。
5.总结:
对象有三种状态的区别
1.Transient 只有内存中一个孤零的对象; 没有 id,缓存没对应的key value,数据库没。
2.Persistent 内存中有,缓存有(是内存中的一部分),数据库有。
3.Detached 内存有,缓存没有,数据库有(但是和内存对象没有连接到一起),有id。
相关推荐
源组(resource groups)采用预先缓存和特殊的清除处理(这是一种通过控制对象分配 和释放来提高效率的方法) <5> GUI:强大而灵活的GUI 管理,支持动画式的GUI <6> 矢量(Vectors),对于2D 矢量的完全支持 3)...
关于aliyun-python-sdk-core 主页: : 软件包许可证:Apache-2.0 原料许可证: 简介:阿里云Python SDK的核心模块。 阿里云Python软件开发工具包(SDK)允许您访问阿里云服务,例如弹性计算服务(ECS),对象存储...
:card_index_dividers: 斯托克Stoxy是配备有Web组件的状态管理API。 Stoxy允许您轻松处理,持久化和更新DOM中的数据,而无需框架的负担。 :open_book: 官方文档官方文档可以在找到 :red_question_mark: 如何Stoxy...
4.3.1. Zend_Cache_Core 4.3.1.1. 简介 4.3.1.2. 可用选项 4.3.1.3. 例子 4.3.2. Zend_Cache_Frontend_Output 4.3.2.1. 简介 4.3.2.2. 可用的选项 4.3.2.3. 例子 4.3.3. Zend_Cache_Frontend_Function 4.3....
说明: 确定查询是否获取表级的读取锁, 以防止在包含该查询的事务处理被提交之前更新任何对象读取。这种操作模式提供可重复的读取, 并确保在同一事务处理种对相同数据的两次查询看到的是相同的值。 值范围: TRUE | ...
8.8 哪种最适合我? 第9章 Cache拦截 9.1 它如何工作? 9.2 为何要(或不要)拦截? 9.3 网络设备 9.3.1 内置Squid 9.3.2 四层交换 9.3.3 Cisco策略路由 9.3.4 Web Cache Coordination协议 9.4 操作...
将log4j-api 2.12.0替换为log4j-api 2.13.2。 版本3.20.3的新功能: 支持请求者付款。 删除默认的log4j配置。 版本3.20.1第三方依赖性: 用okhttp 3.14.2替换okhttp 3.11.0。 版本3.19.11的新功能: 请求...
drbx-js 一个(非官方的)dropbox.js的promise包装器 项目目标 最常用功能的承诺 与browserify的兼容性 少咖啡 modifiedDropboxBuild ...以下功能具有与Dropbox Core HTTP API匹配的参数和(un)official d
尽管 usb.core.Host 对象的实现对于不同的操作系统是不同的,但是 Java 程序员只需要理解 usb.core 包就可以用 jUSB API 开始应用程序的开发。表 1 列出了 usb.core 的接口和类,Java 程序员应该熟悉它们: 表 1. ...
它为.NET Core和桌面应用程序提供了一种简便的方法来检索状态并将命令发送到Tesla车辆。 获取图书馆 您可以克隆此存储库并从源代码进行构建,也可以使用NuGet将其安装到.NET应用程序中。 Install-Package Julmar....
检测 Web Audio API 中的方法并为所有状态活动发出事件。 注意事项 该库需要维护在上下文中创建的 AudioNode 的内部可迭代列表。 这意味着所有节点都被强持有,并且永远不会被垃圾回收。 对于复杂的应用程序显然是...
CFRunLoopRef是在CoreFoundation框架呢,是纯C函数的API,是线程安全的 NSRunLoop是基于CFRunLoopRef的封装,不是线程安全 CFRunLoopRef的线程安全性:CFRunLoopRef不是在线程刚创建的时候创建的,而是在线程获取的...
app-errors.js-标准API相关的应用程序AppError子类的集合,用于更常用的HTTP状态代码 arrays.js-阵列实用程序 base64.js-用于从UTF-8到Base64进行编码的工具,反之亦然 booleans.js-布尔实用程序 copying.js-对象...
coreJava部分 8 1、面向对象的特征有哪些方面? 8 2、作用域public,private,protected,以及不写时的区别? 8 3、String 是最基本的数据类型吗? 8 4、float 型float f=3.4是否正确? 8 5、语句float f=1.3;编译能否...
.NET Core的LogAnalytics客户端 从您的应用程序将日志发送到Azure Log Analytics的最简单方法。 构造一个自定义对象,并将其发送到Log Analytics。 它将在日志中表示为日志条目。 这有助于简化应用程序中的日志记录...
● 所有三种图形模块之间的无缝子图形嵌套。 (行为子树、子状态机、子对话树) ● 完整的子图变量参数化和贴图。 ● 模块化动作和条件任务设计。 ● 条件反应行为树评估。 ● 有条件和基于栈的 FSM 过渡。 ● 丰富...
在Facelet页中,pass-through属性可以通过以下三种方法设置: 1. 通过组件标签的命名空间属性 xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://java.sun.com/jsf/passthrough"> 2. 通过...
您将获得一个包含服务器状态的JSON对象。 /live :如果服务器处于/live返回200 。 /ready :如果服务器已准备就绪,则返回200 。 在制品。 API /api :通过调用addModule(modSchema, modInstance) ,您可以根据...
状态Clojure 中状态计算的基于属性的生成测试。示例: java.util.Set 在这个例子中,我们将指定与实现Set接口的对象的交互。 让我们从需要必要的命名空间开始。 ( require '[clojure.test.check :refer [quick-check...