传智播客hibernatePPT李勇很经典.ppt
《传智播客hibernatePPT李勇很经典.ppt》由会员分享,可在线阅读,更多相关《传智播客hibernatePPT李勇很经典.ppt(50页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、高级软件人才实作培训专家高级软件人才实作培训专家!l传智播客hibernatePPT李勇很经典l Still waters run deep.流静水深流静水深,人静心深人静心深 lWhere there is life,there is hope。有生命必有希望。有生命必有希望高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育主要内容1.引入2.安装配置3.基本概念和CURD4.HQL和Criteria5.关联映射6.继承映射7.集合映射8.懒加载9.缓存10.事务11.其他12.Hibernate不适合的场景13.与JPA的集成(annotation方式)14.最佳实践高级软
2、件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育引入l模型不匹配(阻抗不匹配)Java面向对象语言,对象模型,其主要概念有:继承、关联、多态等;数据库是关系模型,其主要概念有:表、主键、外键等。l解决办法1使用JDBC手工转换。2使用ORM(ObjectRelationMapping对象关系映射)框架来解决,主流的ORM框架有Hibernate、TopLink、OJB。高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育安装配置l下载地址http:/www.hibernate.org,本教程使用3.2.5。l将下载目录/hibernate3.jar和/lib下的hib
3、ernate运行时必须的包加入classpath中:antlr.jar,cglib.jar,asm.jar,commons-collections.jar,commons-logging.jar,jta.jar,dom4j.jar高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育安装配置l配置文件hibernate.cfg.xml和hibernate.properties,XML和properties两种,这两个文件的作用一样,提供一个即可,推荐XML格式,下载目录/etc下是示例配置文件。可以在配置文件指定:数据库的URL、用户名、密码、JDBC驱动类、方言等。启动时Hibe
4、rnate会在CLASSPATH里找这个配置文件。l映射文件(hbm.xml,对象模型和关系模型的映射)。在/eg目录下有完整的hibernate示例。l快速开始小例子高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育基本概念和CURD开发流程1由Domainobject-mapping-db。(官方推荐)2由DB开始,用工具生成mapping和Domainobject。(使用较多)3由映射文件开始。高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育基本概念和CURDDomainObject限制1.默认的构造方法(必须的)。2有无意义的标示符id(主键)(可选)
5、3非final的,对懒加载有影响(可选)DomainJavaObject(User)publicclassUserprivateintid;privateStringname;privateDatebirthDay;/getter setter高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育基本概念和CURD1.hbm.xml主键生成器,参考文档P655.1.42.详细信息见参考文档详细信息见参考文档P62高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育基本概念和CURDJava代码代码1.初始化代码初始化代码(只做一次只做一次)Configuration
6、cfg=new Configuration();cfg.configure(“config.cfg.xml”);也可以通过cfg.setProperty设置属性。SessionFactory sessionFactory=cfg.buildSessionFactory();2.模板代码模板代码Session session=null;Transaction tx=null;trysession=sessionFactory.openSession();tx=session.beginTransaction();/你的代码save,delete,update,mit();catch(Except
7、ion e)if(tx!=null)tx.rollback();throw e;finallyif(session!=null)session.close();高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育基本概念和CURDlSession的几个主要方法1.save,persist保存数据,persist在事务外不会产生insert语句。2.delete,删除对象3.update,更新对象,如果数据库中没有记录,会出现异常。4.get,根据ID查,会立刻访问数据库。5.Load,根据ID查,(返回的是代理,不会立即访问数据库)。6.saveOrUpdate,merge(根据
8、ID和version的值来确定是save或update),调用merge你的对象还是托管的。7.lock(把对象变成持久对象,但不会同步对象的状态)。高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育对象状态l瞬时(transient):数据库中没有数据与之对应,超过作用域会被JVM垃圾回收器回收,一般是new出来且与session没有关联的对象。l持久(persistent):数据库中有数据与之对应,当前与session有关联,并且相关联的session没有关闭,事务没有提交;持久对象状态发生持久对象状态发生改变,在事务提交时会影响到数据库改变,在事务提交时会影响到数据库(h
9、ibernate能检测到能检测到)。l脱管(detached):数据库中有数据与之对应,但当前没有session与之关联;托管对象状态发生改变,hibernate不能检测到。高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育对象状态高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育HQL和CriteriaHQL(Hibernate Query Language)HQL(Hibernate Query Language)面向对象的查询语言,与SQL不同,HQL中的对象名是区分大小写的(除了JAVA类和属性其他部分不区分大小写);HQL中查的是对象而不是和表,并且支
10、持多态;HQL主要通过Query来操作,Query的创建方式:Queryq=session.createQuery(hql);lfromPersonlfromUseruserwhereuser.name=:namelfromUseruserwhereuser.name=:nameanduser.birthday:birthdayCriteriaCriteriaCriteria是一种比HQL更面向对象的查询方式;Criteria的创建方式:Criteriacrit=session.createCriteria(DomainClass.class);简单属性条件如:criteria.add(Res
11、trictions.eq(propertyName,value),criteria.add(Restrictions.eqProperty(propertyName,otherPropertyName)高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育基本功能练习实现实现实现实现UserDaoUserDaopublicinterfaceUserDaopublicvoidsaveUser(Useruser);publicUserfindUserById(intid);publicUserfindUserByName(Stringname);publicvoidupdateUser
12、(Useruser);publicvoidremove(Useruser);高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育基本功能练习实验步骤:实验步骤:实验步骤:实验步骤:1.设计domain对象User。2.设计UserDao接口。3.加入hibernate.jar和其依赖的包。4.编写User.hbm.xml映射文件,可以基于hibernate/eg目录下的org/hibernate/auction/User.hbm.xml修改。5.编写hibernate.cfg.xml配置文件,可以基于hibernate/etc/hibernate.cfg.xml修改;必须提供的几
13、个参数:connection.driver_class、connection.url、connection.username、connection.password、dialect、hbm2ddl.auto。6.编写HibernateUtils类,主要用来完成Hibnerate初始化和提供一个获得Session的方法;这步可选。7.实现UserDao接口。高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育关联映射l多对一(Employee-Department)l一对多(Department-Employee)l一对一(room-door)l多对多(teacher-studen
14、t)l组件映射(User-Name)l集合映射(set,list,map,bag)linverse和cascade(EmployeeDepartment)高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育关联映射多对一多对一多对一多对一(Employee-Department)(Employee-Department)映射文件ER图高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育关联映射一对多一对多一对多一对多(Department-Employee)(Department-Employee)高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育关
15、联映射一对一一对一一对一一对一(Person-IdCard)(Person-IdCard)1)基于主键的one-to-one(person的映射文件)idCard高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育关联映射一对一一对一一对一一对一(Person-IdCard)(Person-IdCard)2)基于外健的one-to-one,可以描述为多对一,加unique=“true”约束property-ref用于指定关联类的一个属性,这个属性将会和本外键相对应高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育关联映射多对多多对多多对多多对多(teacher-s
16、tudent)(teacher-student)在操作和性能方面都不太理想,所以多对多的映射使用较少,实际使用中最好转换成一对多的对象模型;Hibernate会为我们创建中间关联表,转换成两个一对多。高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育关联映射组件映射组件映射组件映射组件映射(User-Name)(User-Name)关联的属性是个复杂类型的持久化类,但不是实体即:数据库中没有表与该属性对应,但该类的属性要之久保存的。当组件的属性不能和表中的字段简单对应的时候可以选择实现:org.hibernate.usertype.UserType或org.hibernate.
17、usertype.CompositeUserType高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育继承映射对象模型(Java类结构)高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育继承映射一个类继承体系一张表一个类继承体系一张表一个类继承体系一张表一个类继承体系一张表(subclass)(subclass)(表结构表结构表结构表结构)高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育继承映射一个类继承体系一张表一个类继承体系一张表一个类继承体系一张表一个类继承体系一张表(subclass)(subclass)(映射文件映射文件映射文件映射文
18、件)高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育继承映射每个子类一张表每个子类一张表每个子类一张表每个子类一张表(joined-subclass)(joined-subclass)(表结构表结构表结构表结构)高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育继承映射每个子类一张表每个子类一张表每个子类一张表每个子类一张表(joined-subclass)(joined-subclass)(映射文件映射文件映射文件映射文件)高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育继承映射混合使用混合使用混合使用混合使用“一个类继承体系一张表一个类继
19、承体系一张表一个类继承体系一张表一个类继承体系一张表”和和和和“每个子类一张表每个子类一张表每个子类一张表每个子类一张表”(表结构表结构表结构表结构)高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育继承映射混合使用混合使用混合使用混合使用“一个类继承体系一张表一个类继承体系一张表一个类继承体系一张表一个类继承体系一张表”和和和和“每个子类一张表每个子类一张表每个子类一张表每个子类一张表”(映射文件映射文件映射文件映射文件)高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育继承映射每个具体类一张表每个具体类一张表每个具体类一张表每个具体类一张表(union-su
20、bclass)(union-subclass)(表结构表结构表结构表结构)高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育继承映射每个具体类一张表每个具体类一张表每个具体类一张表每个具体类一张表(union-subclass)(union-subclass)(映射文件映射文件映射文件映射文件)主健不能是identity类型,如果父类是abstract=”true”就不会有表与之对应。隐式多态,映射文件没有联系,限制比较多很少使用。高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育集合映射集合映射集合映射集合映射集合映射(set,list,array,bag,m
21、ap)(set,list,array,bag,map)!-!-高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育集合映射集合映射集合映射集合映射集合映射(set,list,array,bag,map)(set,list,array,bag,map)!表中有单独的整型列表示list-index!表中有单独的整型列表示list-index高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育集合映射集合映射集合映射集合映射集合映射(set,list,array,bag,map)(set,list,array,bag,map)高级软件人才实作培训专家高级软件人才实作培训专
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 传智播客 hibernatePPT 李勇很 经典
限制150内