Hibernate(一)概述
来源:互联网 发布:淘宝代销怎么终止合同 编辑:程序博客网 时间:2024/06/05 12:42
Hibernate3框架(持久层)
Hibernate:是一种ORM映射工具,能够建立面向对象的域模型和关系数据模型之间的映射,全自动ORM的
关于ORM:http://blog.csdn.net/zooooooh/article/details/78504929
实现作用:
1. 主要用实现Java对象和数据库的表之间的映射,除此之外还提供数据查询和获取数据的方法
2. Hibernate可以大幅度减少开发时手动编写SQL语句和JDBC代码的时间
3. Hibernate可以完全隔离数据库,解耦项目与数据库的依赖关系
PO(Persistent Object,持久化对象):
PO=POJO+XML映射文件
为了使用Hibernate进行持久化操作,通常有如下的操作步骤:
(1)开发持久化类,由POJO加映射文件组成。
(2)获取Configuration。
(3)获取SessionFactory。
(4)获取Session,打开事务。
(5)用面向对象方式操作数据库。
(6)关闭事务,关闭Session。
随PO和Session的关联关系,PO可有以下的3种状态。
(1)瞬态:如果PO实例从未与Session实例关联过,该实例处于瞬态状态。
(2)持久化:如果PO 实例与Session实例关联起来,且该实例关联到数据库的记录。
(3)脱管:如果PO实例曾经与Session实例关联过,但是因为Session的关闭等原因,PO实例脱离了Session 的管理,这种状态被称为脱管状态。
对PO的操作必须在Session的管理下才能同步到数据库,Session由SessionFactory 工厂产生,SessionFactory是数据库编译后的内存镜像,通常一个对应一个SessionFactory对象。SessionFactory对象是由Configuration对象生成,Configuration负责加载Hibernate配置文件。
上面的使用Hibernate添加了一条记录,对比Hibernate和JDBC两种操作数据库的方式,不难发现Hibernate有两个显著的优点。
(1)不再需要编写SQL语句,而是允许采用OO方式来访问数据库。
(2)JDBC访问过程中大量的checked异常被包装成Hibernate的Runtime异常,从而不再要求程序必须处理所有异常。
hibernate三大状态(重要):
瞬时状态:对象由new操作符创建,尚未与Session关联的对象被认为处于瞬态。瞬态对象不会被持久化到数据库中,也不会被赋予持久化标志。
持久化状态:持久化实例在数据库中有对应的记录,并拥有一个持久化标志。持久化对象必须与指定的Session关联。Hibernate会检测到处于持久化状态对象的改动,在当前操作执行完成式将对象数据写回数据库中,开发者不用手动执行update更新数据库。
托管状态:某个实例曾经处于持久化状态,但随着与之关联的Session被关闭,该对象就变成脱管状态。脱管对象的引用依然有效,对象可继续被修改。如果重新让脱管对象与某个Session关联,该Session将重新转换为持久化状态,而脱管期间的改动也可被写入数据库。
- Hibernate (一)概述
- hibernate概述(一)
- Hibernate(一)概述
- Hibernate(一)概述
- Hibernate 主键概述(一)
- 【Hibernate一】概述及入门
- Hibernate旅程(一)Hibernate架构概述
- Hibernate(一)Hibernate架构概述
- Follow Me:深入浅出学习Hibernate一:Hibernate概述
- Hibernate概述
- Hibernate 概述
- Hibernate 概述
- 【Hibernate】概述
- Hibernate概述
- Hibernate概述
- Hibernate概述
- Hibernate概述
- 【Hibernate】概述
- .NET下使用HTTP请求的正确姿势
- 07:合影效果
- OpenCV中IplImage和单字节char*的相互转换
- Spring boot字符串转日期的转换器
- 测鬼记(中)之奋斗——圈子
- Hibernate(一)概述
- Struts2动态方法调用
- 独轮车,白书P308Uva10047(BFS求最短路)
- 使用QT和opencv3.3进行目标检测(YOLO)
- 集合覆盖问题、最大覆盖问题、呼叫中心排班问题闲谈
- JVM并不是那么重量级
- String.Format()方法
- DB2在dbvisualizer 客户端执行begin end 语句块的案例,亲测可用
- 51nod 1006 最长公共子序列Lcs