欢迎来到天天文库
浏览记录
ID:27441422
大小:566.00 KB
页数:53页
时间:2018-12-02
《对象关系映射—hibernate作者:钱安川(moxie)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、对象/关系映射—Hibernate作者:钱安川(Moxie)Email:achqian@yahoo.com.cn学员要求:熟悉Java、SQL、JDBC,掌握面向对象的开发方法,并有实际项目开发经验课程目标:理解O/RMapping原理,掌握Hibernate开发的相关知识,并能使用Hibernate进行实际项目开发目录一、持久化层-O/RMapping二、Hibernate入门三、Hibernate映射申明(Mappingdeclaration)四、持久化对象的状态和生命周期五、Hibernate查询六、Hibernate最
2、佳实践一、持久化层-O/RMapping基于B/S的典型三层架构如何分层?业务逻辑层和持久化层绝不要依赖于展现层。使用假设法测试。例子:1、一个显示课程考试分数的列表。现在要将不及格的分数用红色字体显示(低于60分)。2、搜索。如何进行对象-关系数据库的匹配publicclassUser{privateStringname;privateStringpassword;privateListaddress;………}createtabletbl_user(namevarchar(255)notnull,passwordvarcha
3、r(255),……….primarykey(name))如何进行对象-关系数据库的匹配?对象关系数据库类的属性(基本类型)表的列类表1:n/n:1外键n:m关联表继承单表继承、具体表继承、类表继承对象—关系数据库的不匹配范式粒度(granularity)的问题子类型(subtypes)的问题同一性(identity)的问题与关联(associations)有关的问题对象结构导航(navigation)的问题范式不匹配的代价花费很多时间和精力来手工实现对象和关系的匹配。甚至要扭曲对象模型直到它与下层的关系技术匹配为止。JDBCA
4、PI本身的问题。JDBC和SQL提供了一个面向语句(即命令)的方法从SQL数据库中来回移动数据。至少在三个时刻(Insert,Update,Select)必须指定一个结构化关系,这增加了设计和实现所需要的时间。基于关系数据库的持久层可选方案优点缺点SQL/JDBC成熟,流行,使用DAO模式代码烦杂,可读性差,维护困难,移植困难EntityBeanCMP(EJB1.1之后),未来的EJB3错误的设计。不可移植,依赖性强,不可序列化,不支持多态的关联查询JDO简单、透明、标准不够成熟基于关系数据库的持久层可选方案优点缺点Apach
5、eOJB性能、稳定性,属于Apache基金组织文档资源太少,支持标准太多成了负担(ODMG3.0,JDO1.0)iBATIS可以控制更多的数据库操作细节。实用于遗留系统的改造和对既有数据库的复用。持久层封装不够彻底,只是一个DBHelper。Hibernate成熟、流行、功能强大。并逐渐发展成Java持久层事实上的标准。不够透明O/RMapping-What?Why?什么是O/RMapping?对象-关系映射是一门非常实用的工程技术,它实现了Java应用中的对象到关系数据库中的表的自动的(和透明的)持久化,使用元数据(meta
6、data)描述对象与数据库间的映射。O/RMapping的优点提高生产率(Productivity)可维护性(Maintainability)更好性能(Performance)厂商独立性(Vendorindependence)二、Hibernate入门Hibernate概述Hibernate是非常优秀、成熟的O/RMapping框架。它提供了强大的对象和关系数据库映射以及查询功能。Hibernate优势开源(LGPL)成熟流行(约13000downloads/month)自定义APIJBoss将用Hibernate3实现Ent
7、ityBeansHibernate开发步骤一、持久化类的设计二、持久化类和关系数据库的映射三、应用的开发持久化Java类必须遵循的原则为类的持久化类字段申明访问方法(get/set)。Hibernate对JavaBeans风格的属性实行持久化。实现一个默认的构造方法(constructor)。这样的话Hibernate就可以使用Constructor.newInstance()来实例化它们。如果是集合类型的属性,它的类型必须定义为集合的接口。例如:List、Set。提供一个标识属性(identifierproperty)。如果
8、没有该属性,一些功能不起作用,比如:级联更新(Cascadedupdates)Session.saveOrUpdate()。持久化类和关系数据库的映射XDoclet:它通过在Java源代码中加入特定的JavaDoctag,从而为其添加特定的附加语义,之后通过XDoclet工具
此文档下载收益归作者所有