SSH基础知识之Hibernate.ppt_第1页
SSH基础知识之Hibernate.ppt_第2页
SSH基础知识之Hibernate.ppt_第3页
SSH基础知识之Hibernate.ppt_第4页
SSH基础知识之Hibernate.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、SSH基础知识之Hibernate,主讲人:周文敏 2012-2-13,ORM介绍,看广州人与北京人做生意 何谓ORM,ORM介绍,看广州人与北京人做生意,ORM介绍,ORM视图,ORM介绍,何谓ORM,对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将java程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。,Hibernate介绍,Hibernate介绍 Hibernate组成部分 Hibernate使用流

2、程,Hibernate介绍,hibernate 是一个O/R mapping框架,它使得与关系数据库打交道变得十分轻松,就像您的数据库中包含每天使用的普通Java对象一样,同时不必考虑如何把它们从神秘的数据库表中取出(或放回到数据库表中)。,Hibernate程序的组成部分,先看看联合国大会的组成 有各个国家的老外们参加 有开会的发言人 老外们需要翻译,Hibernate程序的组成部分,使用了Hibernate的程序: 有数据库中的各张表 有程序里的各个对象 当然需要一个“翻译”来告诉程序里的各个对象“各张表在程序里分别对应那个对象”,Hibernate程序的组成部分,Hibernate配置文

3、件:hibernate.cfg.xml 数据库 与数据库对应的各个对象:POJO JavaBean与库表的映射配置:*.hbm.xml,hibernate.cfg.xml样例, com.mysql.jdbc.Driver jdbc:mysql:/localhost:3306/hibernate_learning root 123 1 org.hibernate.dialect.MySQLDialect thread org.hibernate.cache.NoCacheProvider true create- ,POJO样例,package base_mon.beans; public cl

4、ass Student private String id; private String name; public String getId() return id; public void setId(String id) this.id = id; public String getName() return name; public void setName(String name) = name; ,*.hbm.xml, ,Hibernate使用流程,建立库表(找发言人) 编写hibernate.cfg.xml(总体配置) 编写POJO(找各国代表) 配置POJO

5、与库表的映射(请翻译) 编写数据库操作代码(开始开会),Hibernate查询方案,HQL方案 统计函数调用方案 嵌套子查询方案 本地SQL查询方案(选讲),Hibernate查询方案,普通查询 查询部分字段 查询一个字段 查询多个字段 实例化多字段查询结果,Hibernate查询方案HQL方案,Hibernate查询方案,在HQL中,使用的是对象,而不是库表。 返回的是保存着要查询的数据的对象。 Query q = session.createQuery( “FROM Student s WHERE s.age 18” );,HQL方案 - 普通查询,Hibernate查询方案,在HQL中指

6、定要查询的对象的属性。 取得查询结果时,查询到的属性的值不在以所属对象的形式保存在List中,而是以自身类型的形式保存在List中。,HQL方案 - 查询一个字段,Hibernate查询方案,Query q = session.createQuery( “SELECT FROM Student s WHERE s.age 18” ); List list = q.list(); for ( int i = 0 ; i list.size() ; i + ) String name = ( String )list.get(i); ,HQL方案 - 查询一个字段,Hibernate

7、查询方案,在HQL中指定要查询的对象的各个属性。 取得查询结果时,查询到的属性的值不在以所属对象的形式保存在List中,而是以Object数组的形式保存在List中。,HQL方案 - 查询多个字段,Hibernate查询方案,Query q = session.createQuery( “SELECT , s.age FROM Student s WHERE s.age 18” ); List list = q.list(); for ( int i = 0 ; i list.size() ; i + ) Object res = ( Object )list.get(i); St

8、ring name = ( String )res0; Integer age = ( Integer )res1; ,HQL方案 - 查询多个字段,Hibernate查询方案,将多字段查询的结果保存在对应的实例中,让查询结果以对象的形式被程序使用。 在HQL中要显示实例化结果。 对应的POJO要拥有实例化自身的构造函数。,HQL方案 实例化多个字段查询结果,Hibernate查询方案,Query q = session.createQuery( “SELECT new Student( , s.age ) FROM Student s WHERE s.age 18” ); Lis

9、t list = q.list(); for ( int i = 0 ; i list.size() ; i + ) Student stu = ( Student )list.get(i); Student类要拥有Student( String, int )的构造函数。,HQL方案 实例化多个字段查询结果,Hibernate查询方案,COUNT():统计记录条数。 MIN():求最小值。 MAX():求最大值。 SUM():求和。 AVG():求平均值。,统计函数调用方案,Hibernate查询方案,Query q = session.createQuery( “SELECT COUNT(*

10、) FROM Student); Query q = session.createQuery( “SELECT MIN(s.age) FROM Student s); Query q = session.createQuery( “SELECT MAX(s.age) FROM Student s); Query q = session.createQuery( “SELECT SUM(s.age) FROM Student s); Query q = session.createQuery( “SELECT AVG(s.age) FROM Student s);,统计函数调用方案,Hibern

11、ate查询方案,All:所有记录。 Any:记录中的任意一条。 Some:与Any一样。 In:与“Any”一样。 Exists:查询至少要返回一条记录。,嵌套子查询方案,Hibernate查询方案,求平均年龄以上的学生姓名: Query q = session.createQuery( “SELECT FROM Student s WHERE s.age exists( SELECT AVG(s.age) FROM Student s );,嵌套子查询方案,Hibernate查询方案,基本查询 命名查询,本地SQL检索方案,Hibernate查询方案,使用session的cre

12、ateSQLQuery方法。 获取查询结果以前要将别名与实体类关联起来。,本地SQL检索方案 - 基本查询,Hibernate查询方案,String sql = “SELECT s.* FROM Student s”; SQLQuery q = session.createSQLQuery( sql ); q.addEntity( “s”, Student.class ); List list = q.list();,本地SQL检索方案 - 基本查询,Hibernate查询方案,在POJO映射文件中对查询命名和设定。 在代码中用session的getNamedQuery方法来执行某命名查询。,本地SQL检索方案 -命名查询,Hibernate查询方案, :age ,本地SQL检索方案 -命名查询,Hibernate查询方案,Query q = session.getNamedQuery( “QueryStudents” ); /sql语句参数赋值 q.setInteger( “age”, 18 );,本地SQL检索方案 -命名查询,Hibernate其它功能,集合映射 -Map,Set映射 关联表的操作 一对一,一对多 与 多对一,多对多 多线程数据共享解决方案 -Hibernate官方不推荐多线程共享同一个Session。 -使用Thread

温馨提示

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

评论

0/150

提交评论