Java对象持久化技术Hibernate 二

Java对象持久化技术详解与应用 JDBC(Java Database Connectivity)是一个Java API,它为多种数据库提供了一个独立于数据库的通用方法来进行数据库访问。自1997年首次被引入Java SE平台以来,JDBC已经成为Java开发者连接数据库的标准方式。JDBC API由一系列类和接口组成,它们位于java.sql和javax.sql包中。JDBC架构主要包含以下几个部分:驱动管理器:它负责加载并注册JDBC驱动,同时在应用程序和数据库驱动之间起桥梁作用。数据库驱动。 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 创建数据库Schema 在本例中,与Customer类对应的数据库表名为CUSTOMERS,它在MySQL数据库中的DDL定义如下: create table CUSTOMERS (   ID bigint not null primary key,   NAME varchar(15) not null,   EMAIL varchar(128) not null,   PASSWORD varchar(8) not null,   PHONE int ,   ADDRESS varchar(255),   SEX char(1) ,   IS_MARRIED bit,   DESCRIPTION text,   IMAGE blob,   BIRTHDAY date,   REGISTERED_TIME timestamp   );    CUSTOMERS表有一个ID字段,它是表的主键,它和Customer类的id属性对应。CUSTOMERS表中的字段使用了各种各样的SQL类型 2.4 创建对象-关系映射文件 Hibernate采用XML格式的文件来指定对象和关系数据之间的映射。在运行时,Hibernate将根据这个映射文件来生成各种SQL语句。在本例中,将创建一个名为Customer.hbm.xml的文件,它用于把Customer类映射到CUSTOMERS表,这个文件应该和Customer.class文件存放在同一个目录下。例程2-3为Customer.hbm.xml文件的代码。 例程2-3 Customer.hbm.xml <?xml version="1.0"?>   <!DOCTYPE hibernate-mapping PUBLIC "-   //Hibernate/Hibernate Mapping DTD 2.0   //EN"   "http://hibernate.sourceforge.net   /hibernate-mapping-2.0.dtd">      <hibernate-mapping>   <class name="mypack.Customer"   table="CUSTOMERS">      <id name="id" column="ID" type="long">   <generator class="increment"/>   </id>      <property name="name"   column="NAME" type="string"   not-null="true" />   <property name="email"   column="EMAIL"   type="string"   not-null="true" />   <property name="password"   column="PASSWORD" type="string"   not-null="true"/>   <property name="phone"   column="PHONE"   type="int" />   <property name="address"   column="ADDRESS"  type="string" />   <property name="sex"   column="SEX"    type="character"/>   <property name="married"   column="IS_MARRIED" type="boolean"/>   <property name="description"   column="DESCRIPTION" type="text"/>   <property name="image"   column="IMAGE"    type="binary"/>   <property name="birthday"   column="BIRTHDAY"   type="date"/>   <property name="registeredTime"   column="REGISTERED_TIME"   type="timestamp"/>   </class>   </hibernate-mapping>    2.4.1 映射文件的文档类型定义(DTD) 在例程2-3的Customer.hbm.xml文件的开头声明了DTD(Document Type Definition,文档类型定义),它对XML文件的语法和格式做了定义。Hibernate的XML解析器将根据DTD来核对XML文件的语法。 每一种XML文件都有独自的DTD文件。Hibernate的对象-关系映射文件使用的DTD文件的下载网址为:http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd。此外,在Hibernate软件包的src etsfhibernate目录下也提供了hibernate-mapping-2.0.dtd文件。在这个文件中,描述顶层元素的代码如下: <!ELEMENT hibernate-mapping (meta*,   import*, (class|subclass|joined-subclass)*,   query*,sql-query*)>    描述顶层元素的子元素的代码如下: <!ELEMENT class (   meta*,   (cache|jcs-cache)?,   (id|composite-id),   discriminator?,   (version|timestamp)?,   (property|many-to-one|one-to-one   |component|dynamic-component|any   |map|set|list|bag|idbag|array   |primitive-array)*,   ((subclass*)|(joined-subclass*))   )>    元素是对象-关系映射文件的根元素,其他元素(即以上DTD代码中括号以内的元素,如子元素)必须嵌入在元素以内。在元素中又嵌套了好多子元素。 在以上DTD代码中,还使用了一系列的特殊符号来修饰元素,表2-3描述了这些符号的作用。在创建自己的对象-关系映射文件时,如果不熟悉某种元素的语法,可以参考DTD文件。 此外,在映射文件中,父元素中的各种子元素的定义必须符合特定的顺序。例如,根据元素的DTD可以看出,必须先定义子元素,再定义子元素,以下映射代码颠倒了和子元素的位置: <class name="mypack.Customer" table="CUSTOMERS"> <property name="name" column="NAME" type="string" not-null="true" /> <property name="email" column="EMAIL" type="string" not-null="true" /> <id name="id" column="ID" type="long"> <generator class="increment"/> </id> …… </class> Hibernate的XML解析器在运行时会抛出MappingException: [java] 21:27:51,610 ERROR XMLHelper: 48 - Error parsing XML: XML InputStream (24) The content of element type "class" must match "(meta*,(cache|jcs-cache)?, ( id|composite-id), discriminator?,(version|timestamp)?, (property|many-to-one|one-to-one|component| dynamic-component|any|map|set |list|bag|idbag|array|primitive-array)*, (subclass*|joined-subclass*))". [java] net.sf.hibernate.MappingException: Error reading resource: mypack/Customer.hbm.xml at net.sf.hibernate.cfg.Configuration.addClass (Configuration.java:357) 2.4.2 把Customer持久化类映射到CUSTOMERS表 例程2-3的Customer.hbm.xml文件用于映射Customer类。如果需要映射多个持久化类,那么既可以在同一个映射文件中映射所有类,也可以为每个类创建单独的映射文件,映射文件和类同名,扩展名为"hbm.xml"。后一种做法更值得推荐,因为在团队开发中,这有利于管理和维护映射文件。 元素指定类和表的映射,它的name属性设定类名,table属性设定表名。以下代码表明和Customer类对应的表为CUSTOMERS表: <class name="mypack.Customer" table="CUSTOMERS"> 如果没有设置元素的table属性,Hibernate将直接以类名作为表名,也就是说,在默认情况下,与mypack.Customer类对应的表为Customer表。 元素包含一个子元素及多个子元素。子元素设定持久化类的OID和表的主键的映射。以下代码表明Customer类的id属性和CUSTOMERS表中的ID字段对应。 <id name="id" column="ID" type="long"> <generator class="increment"/> </id> 元素的子元素指定对象标识符生成器,它负责为OID生成惟一标识符。本书第5章(映射对象标识符)详细介绍了Hibernate提供的各种对象标识符生成器的用法。 子元素设定类的属性和表的字段的映射。子元素主要包括name、type、column和not-null属性。 1.元素的name属性 元素的name属性指定持久化类的属性的名字。 2.元素的type属性 元素的type属性指定Hibernate映射类型。Hibernate映射类型是Java类型与SQL类型的桥梁。表2-4列出了Customer类的属性的Java类型、Hibernate映射类型,以及CUSTOMERS表的字段的SQL类型这三者之间的对应关系。 表2-4 Java类型、Hibernate映射类型以及SQL类型之间的对应关系 Customer类的属性 Java类型 Hibernate映射类型 CUSTOMERS表的字段 SQL类型 name java.lang.String string NAME VARCHAR(15) email java.lang.String string EMAIL VARCHAR(128) password java.lang.String string PASSWORD VARCHAR(8) phone int int PHONE INT address java.lang.String string ADDRESS VARCHAR(255) sex char character SEX CHAR(1) married boolean boolean IS_MARRIED BIT description java.lang.String text DESCRIPTION TEXT image byte[] binary IMAGE BLOB birthday java.sql.Date date BIRTHDAY DATE registeredTime java.sql.Timestamp timestamp REGISTERED_TIME TIMESTAMP 从表2-4看出,如果Customer类的属性为java.lang.String类型,并且与此对应的CUSTOMERS表的字段为VARCHAR类型,那么应该把Hibernate映射类型设为string,例如: <property name="name" column="NAME" type="string" not-null="true" /> 如果Customer类的属性为java.lang.String类型,并且与此对应的CUSTOMERS表的字段为TEXT类型,那么应该把Hibernate映射类型设为text,例如: <property name="description" column="DESCRIPTION" type="text"/> 如果Customer类的属性为byte[]类型,并且与此对应的CUSTOMERS表的字段为BLOB类型,那么应该把Hibernate映射类型设为binary,例如: <property name="image" column="IMAGE" type="binary"/> 如果没有显式设定映射类型,Hibernate会运用Java反射机制先识别出持久化类的属性的Java类型,然后自动使用与之对应的默认的Hibernate映射类型。例如,Customer类的address属性为java.lang.String类型,与java.lang.String对应的默认的映射类型为string,因此以下两种设置方式是等价的: <property name="address" column="ADDRESS"/> 或者: <property name="address" type="string" /> 对于Customer类的description属性,尽管它是java.lang.String类型,由于CUSTOMERS表的DESCRIPTION字段为text类型,因此必须显式地把映射类型设为text。 3.元素的not-null属性 如果元素的not-null属性为true,表明不允许为null,默认为false。例如以下代码表明不允许Customer类的name属性为null: <property name="name" column="NAME" type="string" not-null="true" /> Hibernate在持久化一个Customer对象时,会先检查它的name属性是否为null,如果为null,就会抛出以下异常: net.sf.hibernate.PropertyValueException: not-null property references a null or transient value: mypack.Customer.name 如果数据库中CUSTOMERS表的NAME字段不允许为null,但在映射文件中没有设置not-null属性: <property name="name" column="NAME" type="string" /> 那么Hibernate在持久化一个Customer对象时,不会先检查它的name属性是否为null,而是直接通过JDBC API向CUSTOMERS表插入相应的数据,由于CUSTOMERS表的NAME字段设置了not null约束,因此数据库会抛出错误: 708 ERROR JDBCExceptionReporter: 58 - General error, message from server: "Column NAME cannot be null" 值得注意的是,对于实际Java应用,当持久化一个Java对象时,不应该依赖Hibernate或数据库来负责数据验证。在四层应用结构中,应该由表述层或者业务逻辑层负责数据验证。例如对于Customer对象的name属性,事实上在表述层就能检查name属性是否为null,假如表述层、业务逻辑层和Hibernate持久化层都没有检查name属性是否为null,那么数据库层会监测到NAME字段违反了数据完整性约束,从而抛出异常,如图2-2所示,包含非法数据的Customer对象从表述层依次传到数据库层,随后从数据库层抛出的错误信息又依次传到表述层,这种做法显然会降低数据验证的效率。 既然如此,把元素的not-null属性设为true,有何意义呢?这主要是便于在软件开发和测试阶段能捕获表述层或者业务逻辑层应该处理而未处理的异常,提醒开发人员在表述层或者业务逻辑层中加入必要的数据验证逻辑。 4.元素的column属性 元素的column属性指定与类的属性映射的表的字段名。以下代码表明和address属性对应的字段为ADDRESS字段: <property name="address" column= "ADDRESS" type="string"/> 如果没有设置< property >元素的column属性,Hibernate将直接以类的属性名作为字段名,也就是说,在默认情况下,与Customer类的address属性对应的字段为address字段。 元素还可以包括子元素,它和元素的column属性一样,都可以设定与类的属性映射的表的字段名。以下两种设置方式是等价的: <property name="address" column= "ADDRESS" type="string"/> 或者: <property name="address" type="string"> <column name="ADDRESS" /> </property> 元素的子元素比column属性提供更多的功能,它可以更加详细地描述表的字段。例如,以下子元素指定CUSTOMERS表中的NAME字段的SQL类型为varchar(15),不允许为null,并且为这个字段建立了索引: <property name="name" type="string"> <column name="NAME" sql-type="varchar(15)" not-null="true" index="idx_name" /> </property> 子元素主要和hbm2ddl工具联合使用。当使用hbm2ddl工具来自动生成数据库Schema时,hbm2ddl工具将依据子元素提供的信息来定义表的字段。关于hbm2ddl工具的用法参见本书第3章(hbm2java和hbm2ddl工具)。如果数据库Schema是通过手工方式创建的,就不必通过子元素设定字段的详细信息,通常只需设定它的name属性和not-null属性就可以了,例如: <property name="name" type="string"> <column name="NAME" not-null="true" /> </property> 或者: <property name="name" column="NAME" type="string" not-null="true" /> 除了not-null属性以外,子元素的多数属性(如sql-type或index属性)都不会影响Hibernate的运行时行为。 Hibernate采用XML文件来配置对象-关系映射,有以下优点: 1、Hibernate既不会渗透到上层域模型中,也不会渗透到下层数据模型中。 2、软件开发人员可以独立设计域模型,不必强迫遵守任何规范。 3、数据库设计人员可以独立设计数据模型,不必强迫遵守任何规范。 4、对象-关系映射不依赖于任何程序代码,如果需要修改对象-关系映射,只需修改XML文件,不需要修改任何程序,提高了软件的灵活性,并且使维护更加方便
BUUCTF--[OGeek2019]babyrop 才学习了基本的ROP流程,到处找题练,不过也没做出来几道题,以这道32位的题作为例题吧。 这道题是BUUCTF上pwn练习题里的[OGeek2019]babyrop。 代码审计 老规矩先checksec一下: 没有canary保护,nx保护开启排除shellcode可能性,FULL RELEO为地址随机化。 观察主函数,先设定了一个闹铃,到时间就会强制退出程序,解除闹铃的方法在上一篇博客中提到过了, 这道题中闹铃函数依然对我们解题起不到什么干扰作用。 主函数的思路大概是:生成一个随机数,把这个随机数作为 阅读详情

相关推荐

数据产品需求文档(PRD)怎么写?阿里P8分享的模板+5个避坑点

作用:记录文档的版本、作者、评审信息,避免“文档混乱”。填写规范字段说明示例文档名称清晰反映产品名称,如“用户行为分析平台PRD”用户行为分析平台PRD_V1.0文档版本用“版本号+日期”,如V1.0_20240301编写人数据产品经理姓名+联系方式张三(138-XXXX-XXXX)评审人员业务负责人、开发经理、数据分析师、运维负责人李四(业务)、王五(开发)、赵六(数据)、周七(运维)评审时间评审日期2024-03-05评审意见。

架构师的AI之路,分享AI应用开发架构的学习与实践。 1575

提供《精通Hibernate:Java对象持久化技术详解》电子版下载

书名:精通Hibernate:Java对象持久化技术详解.pdf需要的请先留下mail。

baggio785的专栏 8493

比特大陆校招笔试

我当时做的时候没有概念(上边倒计时我一直以为是一个模块的),所以第一个模块写的太长了导致最后才留15分钟快速选的(一共18道题),有一题最后没有选上,两题没有认真看题目瞎选的,求求求过过过!选择题:主要考高中物理题、数学题(念过高中的一定会,但是需要时间算,需要留25分钟左右的时间做)第一道就是写个人的内容,什么最近读过的书,最近的感受等等;分为两个模块,考试内容超级无敌简单,但是注意时间掌握。注意这里别花太长的时间,不然后边来不及。第二道逻辑分析题,需要你写解答。

Domainwa的博客 669

如何用Hibernate进行对象的持久化

 如何用Hibernate进行对象的持久化Hibernate作为数据持久化层的一种技术应用很广泛。现在就其中的知识点在读书过程中进行记录和总结。 这里主要考虑的一种数据的解决方案是:通过DAO(Data Accss Object)和ORM(Object Relational Mapping)实现数据的持久化操作。在这种数据持久化实现方案中,通过DAO来实现对Java对象与数据库中数据之

sumongh我们在一起 2674

三极管自激升压电路设计 - 从参数计算到实践验证

本文详细解析了三极管自激升压电路(焦耳小偷电路)的设计原理与实践方法。通过剖析自激振荡机制与三极管电流关系,指导读者完成从核心参数计算、关键元件选型到面包板搭建调试的全过程。文章重点阐述了如何利用电感、三极管等基础元件实现低压直流到高压的转换,是理解开关电源与电磁能量转换的绝佳实践项目。

weixin_29250573的博客 369

如何用zemax导入solidworks装配体

在zemax使用中,常常需要导入各种零件。如果光机结构较为复杂,那么手工一个一个加载零件,还需要在zmx文件中调整object的位置,非常麻烦。如果能将solidworks的装配体模型直接导入,则可以大幅减小工作量。具体过程为(非序列模式下): 1、新建或打开一个zemax空文件 2、在元件编辑器中,找到一个空文件,双击或直接展开三角符,在类型中找到zemax里的solidworks装配体,如图。...

wojiaoyyy的博客 1万+

Hibernate框架基础——Java对象持久化概述

Java对象持久化概述应用程序的分层体系结构基于B/S的典型三层架构 说明: 展现层:提供与用户交互的界面。 业务逻辑层:实现各种业务逻辑。 数据访问层:负责存放和管理应用程序的持久化业务数据。 更详细的三层架构如下图所示: 软件的层必须具备如下特征: 每个层由一组相关的类或组件构成,共同完成特定的功能。 层与层之间存在自上而下的依赖关系,即上层组件访问下层组件的 API,而下层组件不应该依

李阿昀的博客 2597

电力系统实时仿真技术:从硬件在环到主流平台实践

实时仿真是一种基于高性能计算硬件,在严格时间约束下模拟物理系统动态行为的关键技术。其核心原理在于通过硬实时计算,确保仿真步长内的模型求解与输出时间严格同步,从而构建高保真的虚拟测试环境。这项技术的核心价值在于为电力电子、新能源并网等复杂系统的研发提供了无风险的“数字沙盘”,能够安全地验证控制器逻辑、保护装置动作及系统稳定性。在工程实践中,硬件在环测试通过连接虚拟模型与真实硬件,形成了控制器硬件在环和功率硬件在环两大主流应用场景,广泛应用于设备研发、电网安全分析和人员培训。本文聚焦于电力系统领域,深入解析了实

weixin_30952479的博客 421

精通Hibernate:Java对象持久化技术详解

一、HIBERNATEORM中间件,进行对象的持久化。 二、HIBERNATE入门1、Object/Relation Mapping,简称ORM,解决对象-关系映射。域模型(对象、属性、关联、继承、多态)对象-关系映射文件(XML)关系数据模型(表、字段、索引、主

林荣章的博客 1116

无人机开发平台全解析:从开源飞控到企业级应用实战指南

无人机开发平台是无人机从飞行器演变为智能空中机器人的核心,其本质是提供了一套标准化的软硬件接口与工具链,使开发者能够基于稳定可靠的底层系统,专注于上层应用创新。从技术原理上看,一个完整的开发平台通常包含飞行控制器、机载计算机、传感器套件等硬件层,以及飞控固件、机器人操作系统(ROS/ROS 2)、软件开发套件(SDK)等软件层,通过分层架构实现飞行控制、感知决策与任务执行的解耦。其技术价值在于大幅降低了无人机行业应用的开发门槛,使开发者无需从零构建飞行控制系统,即可快速实现自动巡检、精准农业、物流配送等复杂

weixin_28712491的博客 412

【三维激光扫描】第二章:国内外三维激光扫描设备简介

地面三维激光扫描仪是地面激光扫描系统中最主要的硬件设备,近年来得到了快速发展,主要体现在品牌数量、性能指标、类型等方面的变化。本章主要介绍国内外主要设备的基本情况,对国内外研究现状进行分析,最后指出目前存在的问题与未来的发展趋势。 2.1 国外地面三维激光扫描仪简介 目前,生产地面三维激光扫描仪的公司比较多,随着地面三维激光扫描技术应用普及程度的不断提高,国外产品在中国的市场目前还占主导地位。它们各自的产品在性能指标上有所不同,以下简要介绍有代表性的公司产品。 2.1.1 奥地利 Riegl公司的.

智慧空间实验室 4644

Java对象持久化技术概述

 Java对象持久化技术概述Hibernate从不同的角度的不同解释:它是连接Java应用程序和关系数据库的中间件它对JDBC API进行了封装,负责Java对象的持久化在分层的软件架构中,它位于持久化层,封装了所有数据访问细节,使业务逻辑层可以专注于实现业务逻辑它是一种ORM映射工具,能够建立面向对象的域模型和关系数据模型之间的映射1、应用程序的分层体系结构三层结

hbrqlpf的专栏 5950

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Hibernate旅程(三)Hibernate持久化对象的三个状态

Hibernate中的对象有3中状态,瞬时对象(TransientObjects)、持久化对象(PersistentObjects)和离线对象(DetachedObjects也叫做脱管对象)。 下图3.1显示了瞬时对象、持久化对象和离线对象之间的关系以及它们之间的转换。 图3.1 临时状态:由java的new命令开辟内存空间的java对象也就是普通

Xinghf 3万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java对象持久化技术Hibernate入门之一

Hibernate是Java应用和关系数据库之间的桥梁,它负责Java对象和关系数据之间的映射。Hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供了面向对象的数据访问API。在Java应用中使用Hibernate包含以下步骤。     (1)创建Hibernate的配置文件。     (2)创建持久化类。     (3)创建对象-关系映射文件。

mixer_a的专栏 367

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【Hibernate框架】对象的三种持久化状态

Hibernate中的对象有三种状态,分别是TransientObjects(瞬时对象)、PersistentObjects(持久化对象)和DetachedObjects(托管对象也叫做离线对象)。

Davie's Happy Life 1222

Java对象持久化技术Hibernate入门

Hibernate是Java应用和关系数据库之间的桥梁,它负责Java对象和关系数据之间的映射。Hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供了面向对象的数据访问API。在Java应用中使用Hibernate包含以下步骤。    (1)创建Hibernate的配置文件。    (2)创建持久化类。    (3)创建对象-关系映射文件。    (4)通过Hibernate

翔的窝窝 460

java对象持久化技术_精通Hibernate:Java对象持久化技术详解

一:概念模型---〉关系数据模型--〉域模型域对象之间的关系 :1 :关联(Association)2:依赖 (Dependency)3:聚集 (Aggregation)4 :一般化 (Generalization)二 :SessionFactory接口 与 Session 接口SessionFactory 接口特点 :1 :他是线程安全的,它的同一个实例可以被应用的多个线程共享。2 :他是重量级...

weixin_28857713的博客 320

Hibernate 框架学习——Java对象持久化概述

Java对象持久化概述 应用程序的分层体系结构 基于B/S的典型三层架构 说明: 展现层:提供与用户交互的界面。 业务逻辑层:实现各种业务逻辑。 数据访问层:负责存放和管理应用程序的持久化业务数据。 更详细的三层架构如下图所示: 软件的层必须具备如下特征: 每个层由一组相关的类或组件构成,共同完成特定的功能。 层与层之间存在自上而下的依赖关系,即上层组件访问下...

热心网友 584

Hibernate持久化对象的三种状态

Hibernate中持久化对象的状态有:Transient、Persistent、Detached 持久化对象的生命周期是: 怎样理解持久化对象的三种状态呢?下面的代码会体现出来 package com.bjpowernode.hibernate; import java.util.Date; import junit.framework.TestCase;

李颖杰--廊坊师范学院七期信息技术提高班 6705

Hibernate之持久化对象

Hibernate是一个纯粹的O/RMapping框架,通过Hibernate的支持,程序开发者只需要管理对象的状态,无须理会底层数据库系统的细节。相当于常见的JDBC持久层方案中需要手工管理SQL语句,Hibernate采用完全面向对象的方式来操作数据库。对于程序开发者而言,眼里只有对象、属性,无须理会底层数据表、数据列等概念。 1. 持久化类的要求 虽然Hibernate对持久类滑太远的要

owen_william的博客 791

Java对象持久化技术Hibernate 一

google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//<script type="text/java

java专栏 593

Hibernate——持久化对象状态

持久化对象的状态: 瞬时对象(Transient Objects):使用new操作符初始化的对象不是立刻就持久化的。他们的状态是瞬时的,也就是说他们没有任何跟数据库表相关联的行为,只要应用不再引用这些对象(不再被任何其他对象所引用),他们的状态将会丢失,并由垃圾回收机制回收。 临时对象的特征。临时对象具有以下特征: (1) 不处于Session的缓存中,也可以说,不被任何一个Session实例关联。

JAVA那些事 398

hibernate持久化对象状态

持久化对象的状态: 瞬时对象(Transient Objects):使用new操作符初始化的对象不是立刻就持久化的。他们的状态是瞬时的,也就是说他们没有任何跟数据库表相关联的行为,只要应用不再引用这些对象(不再被任何其他对象所引用),他们的状态将会丢失,并由垃圾回收机制回收。 临时对象的特征。临时对象具有以下特征: (1) 不处于Session的缓存中,也可以说,不被任何一个Sess

好习惯要坚持下去 1721

【java】——Hibernate持久化对象的三个状态

当我到学校的时候,我处于瞬时状态,此时我被学校引用;当我得知自己要上某一个老师的课的时候,到了那个时间点我就处于持久化状态(这时老师可以将我安置到教室的某个座位上去);当我正在上课的时候这时老师出去去厕所了(session关闭),这个时候我的心飞向了外面的远方,这时我就处于离线状态。

一直在奋起,一直在路上 1895

《精通Hibernate:Java对象持久化技术详解》目录

图书信息:孙卫琴 电子工业出版社 第1章 Java应用分层架构及软件模型:   1.1 应用程序的分层体系结构     1.1.1 区分物理层和逻辑层     1.1.2 软件层的特征     1.1.3 软件分层的优点     1.1.4 软件分层的缺点     1.1.5 Java应用的持久化层   1.2 软件的模型     1.2.1 概念模型     1.2.2 关系数据模型...

294
上一篇: 深入探讨 Spring 与 Struts 的集成方案
下一篇: JSP生成静态页面-Tomcat提高性能之王道
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值