hibernate培训.ppt
《hibernate培训.ppt》由会员分享,可在线阅读,更多相关《hibernate培训.ppt(53页珍藏版)》请在咨信网上搜索。
1、对象对象/关系映射关系映射HibernateHibernate作者:钱安川(Moxie)Email:q学员要求学员要求:熟悉Java、SQL、JDBC,掌握面向对象的开发方法,并有实际项目开发经验q课程目标:课程目标:理解O/R Mapping原理,掌握Hibernate开发的相关知识,并能使用Hibernate进行实际项目开发目录目录一、持久化层O/R Mapping二、Hibernate入门三、Hibernate映射申明(Mapping declaration)四、持久化对象的状态和生命周期五、Hibernate查询六、Hibernate最佳实践一、持久化层一、持久化层O/R Mappin
2、gO/R Mapping基于B/S的典型三层架构如何分层?如何分层?q业务逻辑层和持久化层绝不要依赖于展现层。q使用假设法测试。例子:1、一个显示课程考试分数的列表。现在要将不及格的分数用红色字体显示(低于60分)。2、搜索。如何进行对象关系数据库的匹配如何进行对象关系数据库的匹配public class User private String name;private String password;private List address;create table tbl_user(name varchar(255)not null,password varchar(255),.prima
3、ry key(name)如何进行对象如何进行对象关系数据库的匹配?关系数据库的匹配?对象对象关系数据库关系数据库类的属性(基本类型)表的列类表1:n/n:1外键n:m关联表继承单表继承、具体表继承、类表继承对象对象关系数据库的不匹配范式关系数据库的不匹配范式q粒度(granularity)的问题q子类型(subtypes)的问题q同一性(identity)的问题q与关联(associations)有关的问题q对象结构导航(navigation)的问题范式不匹配的代价范式不匹配的代价q花费很多时间和精力来手工实现对象和关系的匹配。q甚至要扭曲对象模型直到它与下层的关系技术匹配为止。qJDBC A
4、PI本身的问题。JDBC和SQL提供了一个面向语句(即命令)的方法从SQL数据库中来回移动数据。至少在三个时刻(Insert,Update,Select)必须指定一个结构化关系,这增加了设计和实现所需要的时间。基于关系数据库的持久层可选方案基于关系数据库的持久层可选方案优点优点缺点缺点SQL/JDBC成熟,流行,使用DAO模式代码烦杂,可读性差,维护困难,移植困难Entity BeanCMP(EJB1.1之后),未来的EJB3错误的设计。不可移植,依赖性强,不可序列化,不支持多态的关联查询JDO简单、透明、标准不够成熟基于关系数据库的持久层可选方案基于关系数据库的持久层可选方案优点优点缺点缺点
5、Apache OJB性能、稳定性,属于Apache 基金组织文档资源太少,支持标准太多成了负担(ODMG 3.0,JDO1.0)iBATIS可以控制更多的数据库操作细节。实用于遗留系统的改造和对既有数据库的复用。持久层封装不够彻底,只是一个DBHelper。Hibernate成熟、流行、功能强大。并逐渐发展成Java 持久层事实上的标准。不够透明O/R Mapping-What?Why?O/R Mapping-What?Why?什么是什么是O/R Mapping?对象-关系映射是一门非常实用的工程技术,它实现了Java应用中的对象到关系数据库中的表的自动的(和透明的)持久化,使用元数据(met
6、a data)描述对象与数据库间的映射。O/R Mapping的优点的优点q提高生产率(Productivity)q可维护性(Maintainability)q更好性能(Performance)q厂商独立性(Vendor independence)二、二、HibernateHibernate入门入门Hibernate概述概述 Hibernate是非常优秀、成熟的O/R Mapping框架。它提供了强大的对象和关系数据库映射以及查询功能。Hibernate优势优势q开源(LGPL)q成熟q流行(约13 000 downloads/month)q自定义APIqJBoss 将用Hibernate3实
7、现Entity BeansHibernateHibernate开发步骤开发步骤一、持久化类的设计一、持久化类的设计二、持久化类和关系数据库的二、持久化类和关系数据库的映射映射三、应用的开发三、应用的开发持久化持久化JavaJava类必须遵循的原则类必须遵循的原则q为类的持久化类字段申明访问方法(get/set)。Hibernate对JavaBeans风格的属性实行持久化。q实现一个默认的构造方法(constructor)。这样的话Hibernate就可以使用Constructor.newInstance()来实例化它们。q如果是集合类型的属性,它的类型必须定义为集合的接口。例如:List、Se
8、t。q提供一个标识属性(identifier property)。如果没有该属性,一些功能不起作用,比如:级联更新(Cascaded updates)Session.saveOrUpdate()。持久化类和关系数据库的映射持久化类和关系数据库的映射XDoclet:它通过在Java源代码中加入特定的JavaDoc tag,从而为其添加特定的附加语义,之后通过XDoclet工具对代码中JavaDoc Tag进行分析,自动生成与代码对应的配置文件(http:/ 类负责管理Hibernate 的配置信息。它包括如下内容:qHibernate运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,
9、数据库Dialect,数据库连接池等。qHibernate映射文件(*.hbm.xml)。Hibernate配置的两种方法:配置的两种方法:q属性文件(hibernate.properties)。调用代码:Configuration cfg=new Configuration();qXml文件(hibernate.cfg.xml)。调用代码:Configuration cfg=new Configuration().configure();ConfigurationConfiguration例子例子数据库连接的配置数据库连接的配置hibernate.dialect net.sf.hiberna
10、te.dialect.MySQLDialecthibernate.connection.driver_class com.mysql.jdbc.Driverhibernate.connection.url jdbc:mysql:/localhost/hibernatehibernate.connection.username roothibernate.connection.password数据库连接池的配置数据库连接池的配置DBCP(App Server连接池首选)连接池首选)hibernate.connection.provider_class net.sf.hibernate.conne
11、ction.DBCPConnectionProvider配置配置DBCP连接池连接池其它hibernate.show_sql truehibernate.jdbc.fetch_size 50hibernate.jdbc.batch_size 25SessionFactorySessionFactory概述:概述:应用程序从SessionFactory(会话工厂)里获得Session(会话)实例。它在多个应用线程间进行共享。通常情况下,整个应用只有唯一的一个会话工厂例如在应用初始化时被创建。然而,如果你使用Hibernate访问多个数据库,你需要对每一个数据库使用一个会话工厂。会话工厂缓存了生成
12、的SQL语句和Hibernate在运行时使用的映射元数据。调用代码:调用代码:SessionFactory sessionFactory=cfg.buildSessionFactory();Session(Session(会话会话)概述:概述:qSession不是线程安全的,它代表与数据库之间的一次操作,它的概念介于Connection和Transaction之间。q Session也称为持久化管理器,因为它是与持久化有关的操作接口。q Session通过SessionFactory打开,在所有的工作完成后,需要关闭。q它与Web层的HttpSession没有任何关系。调用代码调用代码Sess
13、ion session=sessionFactory.openSession();Transaction(Transaction(事务事务)概述:概述:它将应用代码从底层的事务实现中抽象出来这可能是一个JDBC事务,一个JTA用户事务或者甚至是一个公共对象请求代理结构(CORBA)允许应用通过一组一致的API控制事务边界。这有助于保持Hibernate应用在不同类型的执行环境或容器中的可移植性。调用代码:调用代码:Transaction tx=session.beginTransaction();v注:注:使用Hibernate进行操作时(增、删、改)必须显示的调用Transaction(默认
14、:autoCommit=false)。QueryQuery概述:概述:Query(查询)接口允许你在数据库上执行查询并控制查询如何执行。查询语句使用HQL或者本地数据库的SQL方言编写。调用代码:调用代码:Query query=session.createQuery(“from User”);用户的例子用户的例子持久化类持久化类User.javapublic class User private Long id;private String name;private Date birthday;private String email;public User()public User(Str
15、ing name,Date birthday,String email).Get/Set映射文件映射文件User.hbm.xml 应用应用UserTest.javaUserTest.javapublic void testCreate()throws Exception Configuration cfg=new Configuration();cfg.addURL(UserTest.class.getResource(/com/test/um/User.hbm.xml);SessionFactory sessionFactory=cfg.buildSessionFactory();Sessi
16、on session=sessionFactory.openSession();Transaction tx=session.beginTransaction();SimpleDateFormat format=new SimpleDateFormat(yyyy-mm-dd);User user=new User(Jack,format.parse(1980-04-12),J);session.save(user);mit();assertNotNull(user.getId();session.clear();User user_2=(User)session.get(User.class,
17、user.getId();assertNotNull(user_2);session.close();应用应用UserTest.javaUserTest.java保存用户:session.save(user);修改用户:session.update(user);保存或修改用户:session.saveOrUpdate(user);删除用户:session.delete(user);删除所有用户:session.delete(“from User”);查询用户名为“test”的用户:Query query=session.createQuery(from User where user.name
18、=:name);query.setParameter(“test,user.getName();User findUser=(User)query.list().get(0);三、三、HibernateHibernate映射申明映射申明(Mapping declarationMapping declaration)hibernate-mapping一、类层次。class1、主键。id2、基本类型。property3、自定义类。many-to-one|one-to-one4、集合。set|list|map|array4.1、one-to-many4.2、many-to-many5、子类。subc
19、lass|joined-subclass6、其它。component|any等二、查询语句。Query说明:一个Hibernate-mapping中可以同时定义多个类。Query非常简单,主要是用来放置查询语句,便于对数据库查询的统一管理和优化。hibernate-mappinghibernate-mapping(1)、schema(可选):数据库Schema Name(2)、default-cascade(可选,默认为none):默认的级联风格(3)、auto-import(可选,默认为true):是否在查询中只使用类名。不用加package名字。(4)、package(可选),如果该映射文
20、件中定义的类名不包含package,则使用这里定义的package作为类名的前缀。一、类层次一、类层次classclass1 1、主键、主键-ididid name=propertyName (1)type=typename (2)column=column_name (3)unsaved-value=any|none|null|id_value (4)(1)、name(可选):标识属性的名称。(2)、type(可选):标识Hibernate类型的名字。(3)、column(可选默认为属性名):对应数据库表的主键字段的名字。(4)、unsaved-value(可选默认为null):这个值用来判
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- hibernate 培训
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【可****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【可****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。