周总结(三单元三大框架).doc_第1页
周总结(三单元三大框架).doc_第2页
周总结(三单元三大框架).doc_第3页
周总结(三单元三大框架).doc_第4页
周总结(三单元三大框架).doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1. 三大框架(SSH)框架(Framework)最早出现在建筑领域,指的是在建造房屋前期构建的建筑骨架对于应用程序来说,就是应用程序的骨架框架凝结着前人的经验和智慧 使用框架就站在了巨人的肩膀上框架技术的优势不用再考虑公共问题可以专心在业务逻辑上结构统一,便于学习和维护有助于写出高质量程序框架与组件框架就是一组协同工作的组件组件是构建应用程序的“零件”框架是一系列预装的、组合在一起的“零件”框架还定义了“零件”间协同工作的规则1.1. Struts 框架Struts 是MVC 设计模式的一个优秀实现Struts 定义了通用的Controller(控制器)通过配置文件隔离了Model(模型)和View(视图)1.2. Struts 2框架以WebWork优秀的设计思想为核心吸收了Struts 框架的部分优点提供了整洁的MVC设计模式实现的Web应用程序框架1.3. Hibernate 框架是一个优秀的持久化框架简化将对象数据保存到数据库中简化从数据库中读取数据并封装到对象的工作可以使用对象编程思维来操作数据库1.4. Spring 框架一个轻量级的框架作为依赖注入容器和AOP实现存在提供了声明式事务方便与Struts、Struts 2、Hibernate等框架集成Spring中使用的设计模式工厂模式、单例模式、模板方法模式、代理模式、策略模式2. Hibernate 框架目标:使用Hibernate实现数据持久化在项目中熟练使用Hibernate使用Hibernate实现对数据库的增删改查操作掌握HQL查询掌握Criteria查询使用缓存提高查询性能使用注解简化映射配置2.1. Hibernate简介Hibernate作者Gavin KingHibernate创始人 Hibernate in action 作者EJB 3.0的Entity bean specification的实际领导人(sun任命的领导人是Linda DeMichiel)参加了XDoclet和Middlegen的开发2003年9月加入JBoss,全职进行Hibernate开发Hibernate一个开发源代码的对象关系映射框架对JDBC进行了非常轻量级的对象封装将JavaBean对象和数据库的表建立对应关系2.2. Hibernate优势Hibernate 是一个优秀的Java 持久化层解决方案是当今主流的对象关系映射工具Hibernate 简化了JDBC 繁琐的编码Session session = HiberanteUtil.getSession();Query query = session.createQuery(from User);List users =(List)query.list();Hibernate 将数据库的连接信息都存放在配置文件中2.3. 持久化与ORM持久化将程序中数据在瞬时状态和持久状态间转换的机制持久化层JDBC 就是一种持久化机制将程序数据直接保存成文本文件也是持久化机制的一种实现在分层结构中,DAO 层(数据访问层)也被称为持久化层持久化完成的操作将对象保存到关系型数据库中将关系型数据库中的数据读取出来以对象的形式封装ORM(Object Relational Mapping,对象关系映射)编写程序的时候,以面向对象的方式处理数据保存数据的时候,却以关系型数据库的方式存储ORM解决方案包含下面四个部分在持久化对象上执行基本增、删、改、查操作的API用于对持久化对象或属性查询的一种语言或者API用于实体关系映射的工具能够与事务对象交互、执行检查、延迟加载以及其他优化功能Hibernate就是一个优秀的Java持久化层解决方案,是当今主流的ORM工具2.4. 准备Hibernate2.4.1. 下载需要的jar包下载Hibernate推荐下载hibernate-distribution-3.3.2.GA-dist.zipHibernate包目录结构2.4.2. 部署jar包hibernate3.jarrequired 目录下的jar 包Oracle 数据库驱动jar包2.4.3. 创建Hibernate配置文件用于配置数据库连接运行时所需的各种属性默认文件名为“hibernate.cfg.xml” jdbc:oracle:thin:localhost:1521:orclhousewangde6847154679oracle.jdbc.driver.OracleDriverorg.hibernate.dialect.Oracle10gDialecttruetrue2.5. 创建实体类和实体映射文件定义实体类(也称持久化类)配置映射文件(*.hbm.xml)向hibernate.cfg.xml文件中配置映射文件实体类public class User /字段 private Integer id; private String name; private String password; /省略getter&setter 方法User.hbm.xml SEQ_ID hibernate.cfg.xml 2.6. 操作数据库使用Hibernate操作数据库需要七个步骤 Session session = null;Transaction tx = null;try / 1.读取并解析配置文件Configuration config = new Configuration().configure();/ 2读取并解析映射信息,创建SessionFactorySessionFactory sf = config.buildSessionFactory();/ 3.打开Sessionsession = sf.openSession();/ 4.开启事物tx = session.beginTransaction();/ 5.持久化操作session.save(user);/ 6.提交事物mit(); catch (Exception e) e.printStackTrace();tx.rollback(); finally /7.关闭事物if (session != null) session.close();2.7. Hibernate关联映射及高级查询目标:正确配置一对多对象关联关系映射熟练使用HQL查询理解Hibernate检索策略理解并掌握批量处理数据理解Session各常用方法2.7.1. 单向一对多关联关系“一”方关键代码public class Grade private int gid;private String gname;private String gdesc;private Set students = new HashSet();public Set getStudents() return students;public void setStudents(Set students) this.students = students;配置文件关键代码 “多”方关键代码public class Student private int sid;private String sname;private String sex;private Grade grade;public Grade getGrade() return grade;public void setGrade(Grade grade) this.grade = grade;配置文件关键代码 2.7.2. 双向一对多关联关系同时配置单向一对多和单向多对一注:在实际开发中,并非所有的关联关系都适合使用双向关联,视不同的需求设定。如:加载租房信息时获得街道信息;反之,并不是很需要。2.7.3. 其它对象关联关系一对一对象关联关系多对多对象关联关系 2.7.4. 各种属性cascade属性属性值含义和作用all对所有操作进行级联操作save-update执行保存或更新操作时进行级联操作delete执行删除操作时进行级联操作none对所有操作不进行级联操作注:cascade 的设置会带来性能上的变动,需谨慎设置inverse属性inverse“反转”,指定了关联关系中的方向inverse=false 为主动方,由主动方负责维护关联关系在一对多关联中,将“一”方的inverse 设置为true,这将有助性能的改善 注:inverse指的是关联关系的控制方向,而cascade指的是层级之间的连锁操作2.7.5. Hibernate检索方式 导航对象图检索方式 OID检索方式 HQL检索方式 QBC检索方式 本地SQL检索方式2.7.6. HQL1、简介:HQL (Hibernate Query Language)是Hibernate提供的一种面向对象的查询语言语法: select from Entity where group by having order by .update Entity set where delete from Entity where 2、 HQL的使用第一步:得到SessionSession session= new Configuration().configure().buildSessionFactory() .openSession();第二步:编写HQL语句String hql =select sid,sname from Student;第三步:创建Query对象Query query=session.createQuery(hql);第四步:执行查询,得到结果List list = query.list();Iterator it = list.iterator();while(it.hasNext()实体查询from Student where sex=男 and sid 20;分页/设置第一条记录的位置query.setFirstResult(pageIndex-1)*pageSize);/设置最大返回的记录条数query.setMaxResults(pageSize);2.7.7. Hibernate检索策略检索策略运行机制立即检索立即加载与当前对象关联的对象,需要执行多条select语句延迟检索不立即加载与当前对象关联的对象,在第一次访问关联对象时才加载其信息迫切左外连接检索通过左外连接加载与当前对象的关联对象。为立即检索策略,但执行的select语句少,只执行1条select连接查询语句检索作用域作用域可选检索策略默认检索策略受影响的检索方法类级别立即检索延迟检索延迟检索仅影响Session的load()方法关联级别立即检索延迟检索迫切左外连接检索延迟检索所有检索方法Session的get()与load()比较项get()load()查询指定对象按照OID查询指定对象按照OID查询指定对象记录不存在时处理方式返回null抛出HibernateException异常返回值直接返回持久化对象;总是立即加载可以返回实体的代理类实例;支持延迟加载2.7.8. 设定检索策略的常用属性lazy属性类级别检索策略Grade grade=(Grade)session.load(Grade.class,110701); /1System.out.println(grade.getGid(); /2System.out.println(grade.getGname(); /3 lazy=false: 立即检索:代码1查询数据库延迟检索:代码3查询数据库关联级别检索策略List list = session.createQuery(from Grade).list();/1lazy=true: 延迟检索:代码1只产生一条SQL语句。只查询班级信息,而不查询关联的学生

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论