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。
相关推荐
Hibernate Core API是Java开发人员在使用Hibernate ORM框架时最常打交道的部分。它是Hibernate框架的核心组件,提供了对数据库操作的基本抽象和实现。版本3.3.1是该API的一个稳定版本,支持多种数据库交互功能,包括...
Leap Motion设备可以捕捉到用户的手部和手指的精确动作,将其转化为数字信号,这些信号随后可以被编程解析并映射到游戏或应用中的虚拟对象上。Leap Motion SDK提供了丰富的API,允许开发者在各种平台上实现自然、...
- **实体框架**:使用 Entity Framework Core 来实现数据访问层,这是一种流行的对象关系映射(ORM)工具。 - **数据库操作**:包括创建、读取、更新和删除(CRUD)操作。 - **排序、过滤、分页和分组**:对查询结果...
### 三、ETel核心API #### 3.1 根服务器会话——RTelServer RTelServer是ETel API的入口点,用于创建和管理其他子会话。开发者首先需要创建一个RTelServer对象,然后通过该对象来打开其他的子会话。 #### 3.2 ...
目录下的说明文件通常包含Partice_Core的安装指南、API文档、示例代码以及常见问题解答,对于初学者来说非常重要,能够帮助他们快速理解和掌握如何使用这个框架。 5. **标签"Partice"**: 这个标签可能是指粒子...
"MS_core-api" 是一个基于 TypeScript 的核心 API 开发框架,专为构建高效、可扩展的后端服务设计。TypeScript 是 JavaScript 的超集,它引入了静态类型系统和面向对象编程特性,增强了代码的可读性和可维护性。在这...
13. **状态转换**:Hibernate中的对象有三种状态:瞬态(Transient)、持久化(Persistent)和游离(Detached)。对象从一种状态转换到另一种状态,会影响其在数据库中的行为。 14. **动态模型**:Hibernate的...
在分析网络流量时,你可以访问`Session`对象获取请求和响应的各种信息,如方法(GET、POST等)、URL、状态码、头信息、正文等。`Session`对象还包含了一些有用的辅助方法,如`oSession.utilDecodeResponse()`用于...
`response`对象则用于构造返回给客户端的响应,包括状态码、响应头和主体内容。 6. **插件系统**:Flask拥有丰富的插件生态,如Flask-SQLAlchemy用于数据库操作,Flask-WTF进行表单处理,Flask-RESTful构建RESTful ...
以上就是Hibernate 3.3 Core API的一些关键知识点,这个API提供了丰富的功能,使得开发者能够高效、便捷地处理数据库操作,实现对象与数据库之间的无缝转换。通过深入学习和理解这些概念,开发者可以更好地利用...
8. **Entity Framework Core**:作为.NET Core的数据访问层,EF Core支持多种数据库,如SQL Server、SQLite、MySQL等,提供ORM(对象关系映射)功能,简化数据库操作。 9. **性能优化**:ASP.NET Core 2.1在2.0的...
在ASP.NET Core Web API中,开发人员可以通过三种主要方式来返回数据和HTTP状态码,这些方法提供了不同的灵活性和控制程度。下面我们将详细探讨这三种方法,并通过具体的代码示例来展示它们的用法。 首先,最直观和...
标题中的“mysql+efcore+asp.net.core api”揭示了一个基于.NET Core的API应用程序,它使用Entity Framework Core(EFCORE)作为ORM工具,并与MySQL数据库进行交互。这个项目可能是一个Web API服务,用于处理HTTP...
- **依赖注入(Dependency Injection, DI)**:ASP.NET Core内建支持DI,允许开发者轻松管理对象之间的依赖关系,提升代码的可测试性和可维护性。 - **Kestrel服务器**:这是ASP.NET Core默认的HTTP服务器,轻量且...
3. **控制条(Control Bars)**:如工具栏(CToolBar)、状态栏(CStatusBar)和菜单栏(CMenu),它们提供了一种在应用程序中添加常用功能和控制元素的方法。 4. **对话框(Dialogs)**:MFC提供CDialog类用于创建...
如EtherCAT IP Core for Altera FPGAs、AM335x TRM(Technical Reference Manual)、AM335x Industrial SDK(Software Development Kit)、EtherCAT slave implementation guide from ETG(EtherCAT Technology ...
标题中的“botillerias_core”是一个API,专为寻找用户附近药店的服务而设计。这个API可能包含各种功能,如查询药店的位置、营业时间、药品库存等。作为一个学习移动应用开发的资源,它可以帮助开发者理解如何与后端...
模型对象通常与数据库、API接口或其他数据存储进行交互,负责获取和存储数据。模型层应尽量保持无状态,不依赖于视图或视图模型,确保数据的独立性和可重用性。 **2. View(视图)** 视图是用户界面,包括布局、...
ASP.NET Web API 是微软推出的一个用于构建RESTful服务的强大框架,它允许开发者使用.NET Framework或.NET Core来创建可被各种客户端(包括浏览器和移动设备)访问的HTTP服务。本教程将深入探讨如何利用ASP.NET Web ...
Hibernate API是中国Java开发人员在构建持久化层时广泛使用的框架,它简化了对象关系映射(ORM)的过程,使得开发者可以使用面向对象的方式来操作数据库。这个压缩包“hibernate_api”显然包含了Hibernate的核心API...