Hibernate中的持久化类
一、持久化类概述
就是一个JavaBean,这个JavaBean与表建立了映射关系。这个类就称为是持久化类。
简单理解为 持久化类=JavaBean+映射文件。
持久化类:是指其实例需要被Hibernate持久化到数据库中的类。持久化类符合JavaBean的规范,包含一些属性,以及与之对应的getXXX()和setXXX()方法。
二、持久化类的编写规范
l 需要提供无参数的构造方法。
l 类的属性需要私有,对私有的属性提供public的get和set方法。
l 提供一个唯一标识(OID)的属性与表的主键对应。
Java里面使用地址区分是否是同一个对象。数据库中是通过主键区分是否是同一个记录。Hibernate通过唯一标识区分是否在内存中是同一个对象。
l 类不要使用final修饰。
l 类中的属性尽量使用包装类类型。
建议实现序列化接口
三、持久化类的三种状态
3.1 瞬时态(Transient Object)
瞬时态:持久化对象没有持久化标识OID,对象没有被Session管理。
3.2 持久态(Persistent Object)
持久态:持久化对象有持久化标识OID,对象被Session管理。
3.3 脱管态(Detached Object)
脱管态:持久化对象有持久化标识OID,对象没有被Session管理。
3.4 三种状态的转换
【瞬时态】
获得瞬时态:
* Customer c = new Customer();
瞬时态对象转持久态:
* session.save(c); session.saveOrUpdate(c);
瞬时态对象转脱管态:
* c.setCust_id(1l);
【持久态】
获得持久态:
* session.get(),session.load()…;
持久态对象转脱管态:
* session.close(),session.clear(),session.evict(Object obj);
持久态对象转瞬时态:
* session.delete();
【脱管态】
获得脱管态:
Customer c = new Customer(); c.setCust_id(1l);
脱管态对象转持久态
* session.update(); session.saveOrUpdate();
脱管态对象转瞬时态
* c.setCust_id(null);
Hibernate中的持久化类的更多相关文章
- Hibernate中的Entity类之间的继承关系之一MappedSuperclass
在hibernate中,Entity类可以继承Entity类或非Entity类.但是,关系数据库表之间不存在继承的关系.那么在Entity类之间的继承关系,在数据库表中如何表示呢? Hibernate ...
- 初识Hibernate之理解持久化类
上一篇文章我们简单介绍了Hibernate相关的一些最基本的文件及其作用,并在最后完整的搭建了Hibernate的运行环境,成功的完成了与数据库的映射.但是至于其中的一些更加细节的地方并没有 ...
- mybatis与hibernate常用的持久化类,及sqlsession和sqlsessionTemplate区别
首先, 通过翻阅源码,我们来整理一下mybatis进行持久化操作时重要的几个类:SqlSessionFactoryBuilder:build方法创建SqlSessionFactory实例.SqlSes ...
- 如何理解Hibernate中的HibernateSessionFactory类
package com.zz.util; import org.hibernate.HibernateException; import org.hibernate.Session; import o ...
- 写出Hibernate中核心接口/类的名称,并描述他们各自的责任?
Hibernate的核心接口一共有5个,分别为:Session.SessionFactory.Transaction.Query和 Configuration.这5个核心接口在任何开发中都会用到.通过 ...
- 解析Hibernate中的持久化—ORM(转载)
最近一直在学习Hibernate,首先说一下Hibernate出现的原因吧,Hibernate是因为MVC的分层体系结构的出现,即数据持久层(模型层)的出现,持久层是在MVC三层架构的基础上提出来的, ...
- Hibernate中的Configuration类
Configuration类用来管理我们的配置文件的信息的,通过它,我们可以通过创建一个configuration实例来管理相应的配置文档,但是通常我们只创建一个configuration实例. 下面 ...
- Hibernate中Entity实体类的写法
记录下一个Entity类的写法,方便以后查阅: package com.bupt.auth.entity; import java.util.Date; import javax.persistenc ...
- 三、hibernate中持久化类的使用
hibernate的持久化类 持久化:将内存中的一个对象持久化到数据库中的过程,hibernate就是一个用来进行持久化的框架 持久化类:一个Java对象与数据库中表建立了关系映射,那么这个类在hib ...
随机推荐
- volley请求原理
Volley 实现原理解析 本文为 Android 开源项目实现原理解析 中 Volley 部分 项目地址:Volley,分析的版本:35ce778,Demo 地址:Volley Demo 分析者:g ...
- 如何修改新建脚本模板-ScriptTemplates(Unity3D开发之十五)
猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/44957631 ...
- LeetCode之“动态规划”:House Robber && House Robber II
House Robber题目链接 House Robber II题目链接 1. House Robber 题目要求: You are a professional robber planning to ...
- c/c++ 表达式求值
表达式求值 [问题描述] 一个算术表达式是由操作数(operand).运算符(operator)和界限符(delimiter)组成的.假设操作数是正整数,运算符只含加减乘除等四种运算符,界限符有左右括 ...
- SharePoint 调用WebService操作List小记
简述:在SharePoint的使用中,经常需要进行系统集成这样的操作,我们作为SharePoint开发,就需要给其他系统提供接口,而SharePoint提供的WebService就很好的提供了这样的功 ...
- mac os 中如何修改顶栏图标的顺序
很简单哦! 按住 cmd键同时鼠标选中那个图标,直接拖到你想要的位置即可.
- mac os x下Dreamweaver如何还原初始配置
上次在mac下修改Dreamweaver(以下简称dw)时,不知动了哪里,导致打开html文档时设计按钮变灰不能使用!这个太蛋疼了,只能在浏览器中查看效果,live按钮更不用说也是灰化状态. 于是使用 ...
- 面试心得随谈&线程并发的总结
---恢复内容开始--- 线程同步有两种实现方式: 基于用户模式实现和用内核对象实现.前者偏于轻量级,性能也更好,但是只能用于同一进程间的线程同步,后者重量级,性能消耗更大,跨进程. 研读了一下win ...
- [51nod 1515] 明辨是非
Description 给\(n\)组操作,每组操作形式为\(x\;y\;p\). 当\(p\)为\(1\)时,如果第\(x\)变量和第\(y\)个变量可以相等,则输出\(YES\),并限制他们相等: ...
- word break II(单词切分)
Given a non-empty string s and a dictionary wordDict containing a list of non-empty words, add space ...