hibernate基础学习
来源:互联网 发布:专利公司 知乎 编辑:程序博客网 时间:2024/06/06 23:40
一、Java应用分层结构
软件开发过程中逻辑分层:表述层、业务逻辑层、数据库层。
业务逻辑层不仅负责业务逻辑,而且直接访问数据库,提供对业务数据的插删改,为了把数据访问和业务逻辑分开,把数据访问作为单独的持久化层。持久化层封装了数据访问细节,为业务逻辑层提供了面向对象的API,代码可重用性高,能支持多种数据库平台,透明不影响上层的实现。
hibernate是一种开放源代码的ORM软件,ORM软件具有中间件的特性。中间件是在应用程序和其他软件系统之间的连接管道。Hibernate可看成是连接Java应用和关系数据库的管道。中间件具有很高的可重用性,对于各种应用领域都适用。hibernate可以为任何一个需要访问关系数据库的Java应用服务,无须关心它是如何实现,只需要知道如何访问接口就行。
二、软件模型
概念模型用来模拟问题域中的真实实体,描述了每个实体的概念和属性,以及实体之间的关系,这个阶段并不描述实体的行为。
关系数据模型在概念模型的基础上建立起来,用于描述这些关系数据的静态结构。通常一个实体对应一个表。
域对象(Domain Object)即具有状态和行为的对象,构成域模型,是对真实世界实体的软件抽象。域对象可以代表业务领域中的人、地点、事物、概念和业务。分为以下几种:
1.实体域对象:代表人、地点、事物或概念。可以作为包含状态和行为的JavaBean,也称为POJO(Plain Old Java Object)。
2.过程域对象:代表应用中的业务逻辑或流程,通常依赖于实体域对象,可以把业务领域中的动词作为过程域对象。
3.事件域对象:代表应用中的一些事件,通常由系统中的某个行为触发。
域对象的持久化概念
业务数据有两种表现形式:在内存中表现为实体域对象,以及实体域对象之间的各种关系。在关系数据库中表现为表,以及表与表之间的参照关系。Java程序在内存中创建了实体域对象后,不可能永远存在,必须持久化到数据存储设备中。一旦被持久化,就可以再应用程序再次运行时重新读入到内存,重新构造出域对象。hibernate本身是具有冬眠的意思。
三、Java对象持久化技术
ORM采用映射元数据来描述对象-关系的映射细节,使得ORM中间件能在任何一个Java应用的业务逻辑层和数据库层之间充当桥梁。
ORM解决的主要问题是对象和关系的映射。域模型和关系数据模型都分别建立在概念模型的基础上。域模型面向对象,而关系数据模型面向关系。一个持久化类和一个表对应,类的每个实例对应表中的一条记录。ORM中间件采用各种映射方案,来建立两种模型之间的映射关系。
ORM中间件采用元数据来描述对象-关系映射细节,元数据通常采用XML格式,并且存放在专门的对象-关系映射文件中。如果希望把ORM软件集成到自己的Java应用中,用户首先要提供对象-关系映射文件。 只要提供了持久化类与表的映射关系,ORM中间件在运行时就能参照映射文件的信息,把域对象持久化到数据库中。
四、Hibernate AP简介
API接口可分为以下几类:
1.提供访问数据库的操作的接口,包括Session、Transaction、Query
2.用于配置Hibernate的接口:Configuration
3.使应用程序拦截Hibernate内部发生的事件,并做出相关的回应,包括Interceptor、LoadEventListener和SaveEventListener接口。
4.用于扩展Hibernate的功能的接口,如UserType、CompositeUserType和IdentifierGenerator接口。
Hibernate的核心接口:
1.Configuration:配置Hibernate、根启动Hibernate,创建SessionFactory对象
2.SessionFactory:初始化Hibernate,充当数据存储源的代理,创建Session对象。线程安全的,同一个实例可以被应用的多个线程共享。是重量级的,需要很大的缓存,用来存放预定义的SQL语句和映射元数据等。不能随意创建或销毁实例。访问每个数据库只创建一个SessionFactory实例,在应用初始化的时候创建。
3.Session:保存、更新、删除、加载和查询对象。
4.Transaction:管理事务。对底层的事物接口做了封装,包括JDBC API、JTA(Java Transaction API)、CORBA API。
5.Query和Criteria接口:执行数据库查询
五、开发Hibernate基本流程
初始化配置Hibernate:
Configuration confg=new Configuration();config.addClass(Customer.class);sessionFactory=config.buildSessionFactory();
save(), update(), delete(), load()或者get()。
Session是一个轻量级的对象,通常将每一个Session实例和一个数据库事物绑定,每执行一个数据库事物,就应该先创建一个新的Session实例。如果事务执行过程中出现异常,应该撤销事物,不论事物执行成功与否,最后都应该调用Session的close()方法,释放Session实例占用的资源。以下是实例:
Session session=factory.openSession();Transaction tx;try{ tx=session.beginTransaction(); //执行事务 ... //提交事务 tx.commit();}catch(RuntimeException e){ if(tx!=null) tx.rollback(); throw e; }finally{ session.close();}
- 【hibernate+Spring学习】hibernate基础
- Hibernate基础学习一
- Hibernate基础学习笔记
- Hibernate 基础学习
- hibernate学习基础总结
- hibernate基础学习
- Hibernate基础学习总结
- Hibernate 基础学习
- Hibernate 基础学习
- Hibernate 基础学习
- hibernate基础学习
- hibernate基础(视频学习笔记)
- springmvc+hibernate基础学习一
- springmvc+hibernate基础学习二
- Hibernate学习总结之基础篇
- Hibernate 学习笔记(基础篇一)
- 深入浅出hibernate学习笔记 基础语义
- J2EE学习笔记——Hibernate基础
- Qt中在label中显示不同颜色的字符
- Android开发组件集iFramework
- 图
- php邮件发送SMTP
- shell实例浅谈之七检测用户输入串的合法性
- hibernate基础学习
- 啦啦啦啦、新人学习中。。
- JS前台应用
- 配置hibernate
- java发送udp广播包
- div 左中右结构布局问题
- adb shell 查看数据库
- 【求助】如何实现在并肩看中加入代码啊
- JavaScipt——基于对象和事件驱动的客户端语言