一、域对象之间的关系:
- 依赖:类之间访问关系。无需定义成属性。在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架构:
1 .Configuration:
Configuration的主要方法:
1,configure()
2,addXxx()
3,addProperties()/setProperty()/setProperties()
4,buildSessionFactory()
5,generateXxxScript()
2 .SessionFactory接口:
主要方法:
1,getCache();
2,getCurrentSession()和openSession()的区别:
前者:获取当前线程中的session对象,后者:新开一个session对象
要使用getCurrentSession:
<propertyname="hibernate.current_session_context_class">thread</property>
3,openStatelessSession():无状态的session,不支持事务,高性能。
3.Session接口
session的常用方法:(详见:http://blog.csdn.net/z_dendy/article/details/8924742)
- beginTranscation和getTranscation()的简单写法
- clear和一级缓存
- connection和doWork
- close
- contains
- delete
- evict
- flush
- merge和saveOrUpdate
- save和persist对比
- refresh
4.Transaction数据库事务接口
- 将应用代码从底层的事务实现中抽象出来,底层事务可能是一个JDBC事务,一个JTA用户事务或者甚至是一个公共对象请求代理结构,允许应用通过一组一致的API控制事务边界。
- 使用Hibernate进行操作时(增、删、改)必须显示的调用Transaction(默认:autoCommit=false)
- Transcation的标准使用格式
5.Query和Criteria接口
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
对象将提交这些操作到数据库中。