`

028_CoreAPI_对象三种状态

阅读更多

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。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0
0
分享到:
评论
1 楼 落叶留步 2016-01-06  
3.Detached    内存有,缓存没有,数据库有(但是和内存对象没有连接到一起),有id。

内存中没有,缓存没有,数据库有。就是hibernate的session还没有管理这个对象。

另外:
  学hibernate是自毁前途。早日回头。

相关推荐

    hibernate_core_API

    Hibernate Core API是Java开发人员在使用Hibernate ORM框架时最常打交道的部分。它是Hibernate框架的核心组件,提供了对数据库操作的基本抽象和实现。版本3.3.1是该API的一个稳定版本,支持多种数据库交互功能,包括...

    Leap_Motion_Core_Assets_ 4.4.0.rar

    Leap Motion设备可以捕捉到用户的手部和手指的精确动作,将其转化为数字信号,这些信号随后可以被编程解析并映射到游戏或应用中的虚拟对象上。Leap Motion SDK提供了丰富的API,允许开发者在各种平台上实现自然、...

    DotNETCore_API

    - **实体框架**:使用 Entity Framework Core 来实现数据访问层,这是一种流行的对象关系映射(ORM)工具。 - **数据库操作**:包括创建、读取、更新和删除(CRUD)操作。 - **排序、过滤、分页和分组**:对查询结果...

    DP_for_Series_60_Using_the_Core_ETel_APIs_v1_0_en.pdf

    ### 三、ETel核心API #### 3.1 根服务器会话——RTelServer RTelServer是ETel API的入口点,用于创建和管理其他子会话。开发者首先需要创建一个RTelServer对象,然后通过该对象来打开其他的子会话。 #### 3.2 ...

    Partice_Core

    目录下的说明文件通常包含Partice_Core的安装指南、API文档、示例代码以及常见问题解答,对于初学者来说非常重要,能够帮助他们快速理解和掌握如何使用这个框架。 5. **标签"Partice"**: 这个标签可能是指粒子...

    MS_core-api

    "MS_core-api" 是一个基于 TypeScript 的核心 API 开发框架,专为构建高效、可扩展的后端服务设计。TypeScript 是 JavaScript 的超集,它引入了静态类型系统和面向对象编程特性,增强了代码的可读性和可维护性。在这...

    hibernate 4.1 core API 英文版

    13. **状态转换**:Hibernate中的对象有三种状态:瞬态(Transient)、持久化(Persistent)和游离(Detached)。对象从一种状态转换到另一种状态,会影响其在数据库中的行为。 14. **动态模型**:Hibernate的...

    FiddlerCore官网API接口与使用说明帮助文档

    在分析网络流量时,你可以访问`Session`对象获取请求和响应的各种信息,如方法(GET、POST等)、URL、状态码、头信息、正文等。`Session`对象还包含了一些有用的辅助方法,如`oSession.utilDecodeResponse()`用于...

    PyPI 官网下载 | flask_core-1.3.1-py3-none-any.whl

    `response`对象则用于构造返回给客户端的响应,包括状态码、响应头和主体内容。 6. **插件系统**:Flask拥有丰富的插件生态,如Flask-SQLAlchemy用于数据库操作,Flask-WTF进行表单处理,Flask-RESTful构建RESTful ...

    hibernate 3.3 core API 英文版

    以上就是Hibernate 3.3 Core API的一些关键知识点,这个API提供了丰富的功能,使得开发者能够高效、便捷地处理数据库操作,实现对象与数据库之间的无缝转换。通过深入学习和理解这些概念,开发者可以更好地利用...

    asp_net_core2.1官方简体中文手册.zip

    8. **Entity Framework Core**:作为.NET Core的数据访问层,EF Core支持多种数据库,如SQL Server、SQLite、MySQL等,提供ORM(对象关系映射)功能,简化数据库操作。 9. **性能优化**:ASP.NET Core 2.1在2.0的...

    【ASP.NET编程知识】详解如何在ASP.NET Core Web API中以三种方式返回数据.docx

    在ASP.NET Core Web API中,开发人员可以通过三种主要方式来返回数据和HTTP状态码,这些方法提供了不同的灵活性和控制程度。下面我们将详细探讨这三种方法,并通过具体的代码示例来展示它们的用法。 首先,最直观和...

    mysql+efcore+aps.net.core api

    标题中的“mysql+efcore+asp.net.core api”揭示了一个基于.NET Core的API应用程序,它使用Entity Framework Core(EFCORE)作为ORM工具,并与MySQL数据库进行交互。这个项目可能是一个Web API服务,用于处理HTTP...

    asp_net_core2.1官方中文+英文原版手册

    - **依赖注入(Dependency Injection, DI)**:ASP.NET Core内建支持DI,允许开发者轻松管理对象之间的依赖关系,提升代码的可测试性和可维护性。 - **Kestrel服务器**:这是ASP.NET Core默认的HTTP服务器,轻量且...

    MFC.rar_mfc api

    3. **控制条(Control Bars)**:如工具栏(CToolBar)、状态栏(CStatusBar)和菜单栏(CMenu),它们提供了一种在应用程序中添加常用功能和控制元素的方法。 4. **对话框(Dialogs)**:MFC提供CDialog类用于创建...

    Ethercat_firmware_API_Guide.pdf

    如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。 我正在学习制作移动应用,所以我需要知道如何与之交流

    标题中的“botillerias_core”是一个API,专为寻找用户附近药店的服务而设计。这个API可能包含各种功能,如查询药店的位置、营业时间、药品库存等。作为一个学习移动应用开发的资源,它可以帮助开发者理解如何与后端...

    mvvm_core.zip

    模型对象通常与数据库、API接口或其他数据存储进行交互,负责获取和存储数据。模型层应尽量保持无状态,不依赖于视图或视图模型,确保数据的独立性和可重用性。 **2. View(视图)** 视图是用户界面,包括布局、...

    asp_net_web_api

    ASP.NET Web API 是微软推出的一个用于构建RESTful服务的强大框架,它允许开发者使用.NET Framework或.NET Core来创建可被各种客户端(包括浏览器和移动设备)访问的HTTP服务。本教程将深入探讨如何利用ASP.NET Web ...

    hibernate_api

    Hibernate API是中国Java开发人员在构建持久化层时广泛使用的框架,它简化了对象关系映射(ORM)的过程,使得开发者可以使用面向对象的方式来操作数据库。这个压缩包“hibernate_api”显然包含了Hibernate的核心API...

Global site tag (gtag.js) - Google Analytics