一、域对象之间的关系:
- 依赖:类之间访问关系。无需定义成属性。在A中访问B中的方法或属性,或者A负责实例化B。
- 关联:类间的引用关系。以属性定义的方式表现。关联按照多重性可分为一对一、一对多、多对一和多对多。按照导航性可分为单项关联和双向关联。
- 聚合:表示整体与部分的关系,整体和部分可以分开单独存在。
- 组合:强聚合关系,整体和部分之间不能分开。
- 泛化关系:类之间继承关系。
例子:
- 一对一:用户登录信息和用户详细信息
- 一对多:顾客信息对应订单信息,仓库对应货品
- 多对一:一对多反过来
- 多对多:货品和分类,老师和学生
- 聚合关系是“has-a”关系,组合关系是“contains-a”关系;
- 聚合关系表示整体与部分的关系比较弱,而组合比较强;
- 聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象。
举例:
- 聚合:电脑和CPU,主板等。
- 组合:人和手,鼻子眼睛。集团公司和旗下子公司
二、hibernate入门
(一)hibernate是什么?
官方网址:http://www.hibernate.org/
面向java及.net等环境的对象-关系数据库映射工具。
1.开源的持久层框架.
2.ORM(Object/RelationalMapping)映射工具,建立面向对象的域模型和关系数据模型之间的映射.
3.连接java或.net应用和数据库的中间件.
4.对JDBC进行封装,负责java对象的持久化.
5.在分层结构中处于持久化层,封装对数据库的访问细节,使业务逻辑层更专注于实现业务逻辑
(二)、对象-关系映射:
(三)、hibernate历史
- l2001年末,Hibernate的第一个版本发布;
- l2003年6月,Hibernate2发布,并于年末获得Jolt(奥斯卡)2004大奖,后被JBOSS收纳为其子项目之一;
- l2005年3月,Hibernate3正式发布。
- l2010年4月,Hibernate3.5正式发布,支持JPA2。
- 2010年10月,Hibernate3.6.0正式发布
Hibernate 3.6.0正式版主要改进包括:
1.Hibernate 3.6.0放弃了对JDK1.4的支持,也就是说Hibernate3.6.0最低要求JDK1.5了
2.Hibernate 3.6.0将hibernate-jmx与hibernate-annotations两个模块合并到了Hibernate-core中(使用maven的朋友需要修改下pom中的依赖关系了)
3.Hibernate 3.6.0改进了类型的支持
4.Hibernate 3.6.0增加了全新的Hibernate新手指南
5.Hibernate 3.6.0强化了注释对discriminators(鉴别)的支持
6.Hibernate 3.6.0改进了对Envers的支持
(四)、hibernate架构:
(五)、hibernate中的jar包:
lhibernate3.jar: 包含Hibernate3的基础框架和核心API类库,是必须使用的jar包。
ljavassist-3.9.0.jar: java字节码操作库,Hibernate用它来实现PO字节码的动态生成,它是非常核心的库,是必须使用的jar包。
ldom4j-1.6.1.jar: dom4j是一个Java的XML API,类似于jdom,用来读写XML文件。
lcommons-collections.jar: Apache Commons包中的一个,包含了一些Apache开发的集合类,功能比java.util.*强大。必须使用的jar包。
lslf4j-api-1.5.8.jar: 标准日志接口Facade,必须使用的jar包。
lantlr-2.7.6.jar:语法识别工具包。
ljta.jar: JTA(java事务处理的机制)规范,当Hibernate使用JTA的时候需要,不过App Server都会带上它,所以也是多余的。
(六)、API:
1 .Configuration:
配置hibernate,启动hibernate,创建sessionFactory对象。
Configuration的主要方法:
1,configure()
2,addXxx()
3,addProperties()/setProperty()/setProperties()
4,buildSessionFactory()
5,generateXxxScript()
2 .SessionFactory接口:
负责创建Session对象,可以通过Configuration对象创建SessionFactory对象。
SessionFactory对象中保存了当前的数据库配置信息和所有映射关系以及预定义的SQL语句。同时,SessionFactory还负责维护Hibernate的二级缓存。
SessionFactory对象的创建会有较大的开销,而且SessionFactory对象采取了线程安全的设计方式,因此在实际中SessionFactory对象可以尽量的共享,在大多数情况下,一个应用中针对一个数据库可以共享一个SessionFactory实例。
主要方法:
1,getCache();
2,getCurrentSession()和openSession()的区别:
前者:获取当前线程中的session对象,后者:新开一个session对象
要使用getCurrentSession:
<propertyname="hibernate.current_session_context_class">thread</property>
3,openStatelessSession():无状态的session,不支持事务,高性能。
3.Session接口
使用最广泛,也被称为持久化管理器,它提供和持久化相关的操作。增、删、改、查等。不是线程安全的,因此,一个Session对象只可以由一个线程使用。避免多个线程共享。轻量级的,创建和销毁不需要消耗太多资源。Session中有一个缓存,称为一级缓存。存放当前工作单元加载的对象。
4.Transaction数据库事务接口
- 将应用代码从底层的事务实现中抽象出来,底层事务可能是一个JDBC事务,一个JTA用户事务或者甚至是一个公共对象请求代理结构,允许应用通过一组一致的API控制事务边界。
- 使用Hibernate进行操作时(增、删、改)必须显示的调用Transaction(默认:autoCommit=false)
- Transcation的标准使用格式
5.Query和Criteria接口
都是查询接口,query实例包装了HQL查询语句,hql是面向对象的,它引用类名及类的属性名,而不是表名和字段名。Criteria接口完全封装了基于字符串形式的查询语句,比query接口更面向对象,他擅长执行动态查询。
Hibernate的运行过程如下:
1、应用程序先调用Configuration类,该类读取Hibernate配置文件及映射文件中的信息,
2、并用这些信息生成一个SessionFactory对象,
3、然后从SessionFactory对象生成一个Session对象,
4、并用Session对象生成Transaction对象;
A、可通过Session对象的get(),load(),save(),update(),delete()和saveOrUpdate()等方法对PO进行加载、保存、更新、删
除、等操作;
B、在查询的情况下,可通过Session对象生成一个Query对象,然后利用Query对象执行查询操作;如果没有异常,Transaction
对象将提交这些操作到数据库中。
分享到:
相关推荐
"Hibernate入门到精通" Hibernate 是一个基于Java的ORM(Object-Relational Mapping,对象关系映射)框架,它提供了一种简洁高效的方式来访问和操作关系数据库。下面是 Hibernate 的主要知识点: Hibernate 简介 ...
本压缩包提供的是Hibernate入门所需的jar包,包括了Hibernate的核心库以及与之配合使用的相关组件。让我们深入探讨一下这些jar包以及它们在Hibernate中的作用。 1. Hibernate核心库: - `hibernate-core.jar`:这...
【Hibernate入门案例源码】是针对初学者设计的一份教程,旨在帮助理解并掌握Java持久化框架Hibernate的基础应用。Hibernate是一个强大的ORM(对象关系映射)框架,它简化了数据库与Java对象之间的交互,使开发者可以...
**Hibernate入门** Hibernate是一款强大的Java持久化框架,它简化了数据库与Java对象之间的交互,使得开发者无需编写大量的SQL语句,就能实现数据的增删改查。本教程将分为五个部分,逐步深入Hibernate的世界。 **...
**初学Hibernate,Hibernate入门** Hibernate是一个开源的对象关系映射(ORM)框架,它为Java开发者提供了方便的数据持久化服务。在Java应用中,通过Hibernate,开发者可以将数据库操作抽象成对象模型,使得代码...
### Hibernate入门知识点详解 #### Hibernate概述与ORM思想 - **定义**:Hibernate是一个开源的、轻量级的对象关系映射(Object-Relational Mapping,简称ORM)框架,它主要应用于JavaEE架构中的DAO(Data Access ...
【hibernate入门小例子】是一个适合初学者的教程,主要涵盖了如何在JavaWeb项目中使用Hibernate框架与MySQL数据库进行集成。在这个例子中,我们将会深入理解Hibernate的核心概念,包括实体映射、对象关系映射(ORM)...
【hibernate入门--第一个实例】 Hibernate 是一个强大的对象关系映射(ORM)框架,它为Java开发者提供了方便的数据持久化服务。通过使用Hibernate,我们可以将数据库操作转换为对Java对象的操作,从而简化了数据库...
《Hibernate入门到精通》这本书是针对Java开发人员深入学习Hibernate框架的一份宝贵资源。Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序与数据库之间的交互。通过使用Hibernate,...
### Hibernate入门教程知识点详解 #### 一、Hibernate框架简介 **Hibernate** 是一款开放源代码的**对象关系映射(Object-Relational Mapping,简称ORM)**框架,它为Java应用提供了一种高效的机制,用于处理Java...
### Struts + Hibernate 入门实例(Eclipse 版) #### 一、开发环境搭建 在本章节中,作者朱千平将引导我们完成开发环境的搭建,包括以下几个步骤: 1. **下载安装Eclipse**: Eclipse 是一个开源的集成开发环境...
其实Hibernate本身是个独立的框架,它不需要任何web server或application server的支持。然而,大多数的Hibernate入门介绍都加入了很多非Hibernate的东西,看了这个希望能给你点启示!
**hibernate入门实例操作步骤** Hibernate是一款强大的Java对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者可以使用Java对象的方式处理数据库事务。本篇将详细介绍Hibernate入门实例的操作步骤,...
以下是关于Hibernate入门的一些关键知识点: 1. **对象关系映射(ORM)**:ORM是将数据库中的表映射为Java类的过程,通过这种方式,我们可以使用面向对象的编程方式来操作数据,而无需直接编写SQL语句。 2. **...
**Hibernate 教程:带你入门持久化框架** Hibernate 是一个流行的开源对象关系映射(ORM)框架,它为 Java 应用程序提供了便捷的数据持久化服务。本教程将引导你逐步了解 Hibernate 的基本概念、安装配置以及核心...
【标题】:“02_传智播客hibernate教程_hibernate入门案例的细节分析” 在本教程中,我们将深入探讨Hibernate,一个流行的Java对象关系映射(ORM)框架,它简化了数据库操作,使开发者可以更加专注于业务逻辑而不是...