Java持久化与对象数据库.ppt
《Java持久化与对象数据库.ppt》由会员分享,可在线阅读,更多相关《Java持久化与对象数据库.ppt(43页珍藏版)》请在三一办公上搜索。
1、第11章 Java持久化与对象数据库,JavaEE5 教程吉林大学软件学院,主要内容,面向对象数据库的概念ORM、伪对象数据库、JPA普通Java应用程序调用JPA例子会话Bean调用JPA例子,介绍,Java实体Bean只是使用Java持久化接口(JPA)操作数据库的Java实体类,和普通Java实体类没有本质区别,因此不需要服务器运行环境支持。JPA技术本质上是一种操作数据库中的编程接口,和JDBC具有相同作用。但两者的实现思路不同:JPA提供一种面向对象式数据库操作方法,而JDBC则通过SQL语句操作数据库。,11.1 对象数据库与JPA,对象数据库与关系型数据库差异对象数据库支持面向对
2、象的概念,提供基于对象的直接存放和操作关系型数据库对数据的存放基于基本数据类型。,11.1 对象数据库与JPA,11.1.1 面向对象数据库(OODB)OODB核心包括两部分:面向对象数据库管理系统(OODBMS)和面向对象数据库(OODB)对象是面向对象数据库中基本的存在单元,存放到数据库中的对象成为持久化对象OODB提供面向对象数据操作机制,保证面向对象系统和面向对象数据库系统的无缝衔接。DB4O是一款纯面向对象开源数据库。,11.1 对象数据库与JPA,11.1.2 伪对象数据库与ORM软件通过为关系型数据库系统添加特定“补丁”模块,使关系型数据库在使用效果上等同一个面向对象数据库,且对
3、用户完全透明。“补丁”程序称为ORM映射软件,而添加了ORM映射模块的数据库则被称为伪面向对象数据库。,11.1 对象数据库与JPA,ORM与关系型数据库构造伪面向对象数据库系统,伪面向对象数据库,伪面向对象数据库系统的性能和数据管理效率要远低于纯正的面向对象数据库系统,但目前是一种主流的面向对象数据存储系统。,11.1 对象数据库与JPA,JPA是Sun公司为统一Java针对所有ORM软件的程序设计接口而推出的一个标准规范。,JPA和ORM模块示意图,11.1 对象数据库与JPA,ORM本质上是一种基于JDBC的数据库操作技术,是在JDBC基础上抽象出来的软件模块,因此需要JDBC执行环境以
4、及数据库的JDBC驱动软件。ORM作用:将面向对象的概念对应翻译成关系型数据库概念将面向对象操作翻译成以SQL语句为标准的关系型操作,11.1 对象数据库与JPA,JPA模块是对ORM接口的二次封装,使Java应用程序不依赖于具体的ORM接口,从而实现在不同ORM模块间的平行移植。使用JPA设计的Java应用程序需要具备模块JPA接口定义模块ORM模块JDBC接口模块数据库驱动模块,11.1 对象数据库与JPA,11.1.3 JPA和实体Bean的比较BMP是一种通过JDBC操作数据库的技术CMP实际上是一种ORM软件机制,但复杂度高,对Java EE服务器依赖性高JPA则是在CMP基础上,参
5、考了其他ORM软件模块特点,重新设计的Java持久化方案。,11.2 JPA程序初步,开发基于JPA数据库应用程序步骤将JPA模块配置到特定数据库,构成伪对象数据库设计基于JPA对象数据库系统通过对象查询语句或其它途径操作伪对象数据库程序设计方法,11.2 JPA程序初步,例子:设计一个名称为mydb的伪对象数据库系统,11.2 JPA程序初步,伪对象数据库与持久化单元在Java EE中,一个伪对象数据库对应persistence.xml中的一个标记,该标记定义了所能操作的数据库服务器特征和能存储的对象类型。一个单元信息被实例化成实体对象管理器对象(EntityManager)。EntityM
6、anager可以对中的所有实体对象进行对象数据库操作。一个persistence.xml文件可以包含多个单元,不同单元具有不同名称属性,对应了不同伪对象数据库系统。,org.hibernate.ejb.HibernatePersistence com.Person,persistence.xml,对persistence.xml讲解:引用了MySql数据库的JDBC驱动,因而在该文件被使用或部署时,需要提供MySql JDBC驱动需要和JPA软件模块以及应用程序一起部署,在执行过程中被应用软件调用,是应用软件的组成模块。,11.2 JPA程序初步,设计伪对象数据库结构第一步:关系型数据库中用于
7、存放对象的表结构第二步:伪对象数据库中的持久化类,11.2 JPA程序初步,设计关系型数据库中的存储结构,CREATE TABLE persons(Id int(11)NOT NULL auto_increment,name varchar(50)default NULL,age int(11)default NULL,sex varchar(50)default NULL,PRIMARY KEY(Id)insert into persons(ID,Name,Age,Sex)values(1,zhangsan,32,male);insert into persons(ID,Name,Age,S
8、ex)values(2,lisi,32,male);insert into persons(ID,Name,Age,Sex)values(3,wangwu,32,male);,11.2 JPA程序初步,设计持久化类/*01*/package;/*02*/*03*/import java.io.*;/*04*/import javax.persistence.*;/*05*/*06*/Entity/*07*/Table(name=PERSONS)/*10*/public class Person implements Serializable/*11*/*12*/Id/*13*/*15*/Col
9、umn(name=ID,nullable=false)/*16*/private Integer id;/*17*/*18*/Column(name=NAME)/*19*/private String name;/*20*/*21*/Column(name=AGE)/*22*/private Integer age;/*23*/,Person.java,/*24*/Column(name=SEX)/*25*/private String sex;/*26*/*27*/public Person()/*28*/public Person(Integer id)/*29*/this.id=id;/
10、*30*/*31*/*32*/public Integer getId()/*33*/return this.id;/*34*/*35*/public void setId(Integer id)/*36*/this.id=id;/*37*/*38*/*39*/public String getName()/*40*/return this.name;/*41*/*42*/public void setName(String name)/*43*/this.name=name;/*44*/*45*/*46*/public Integer getAge()/*47*/return this.ag
11、e;/*48*/*49*/public void setAge(Integer age)/*50*/this.age=age;/*51*/*52*/*53*/public String getSex()/*54*/return this.sex;/*55*/*56*/public void setSex(String sex)/*57*/this.sex=sex;/*58*/*59*/,Person.java,11.2 JPA程序初步,表和类对应关系的基本原则:类和表对应类中的成员变量和表中的字段对应类的标识属性(Id)和表的主键对应,JPA属性功能列表,11.2 JPA程序初步,持久化类和普
12、通Java类区别持久化Java类是一个实体类,其重要信息是类中的成员变量;类方法不重要持久化Java类中,成员变量通常要按照JavaBean的setter和getter方式,定义负责成员变量读写的setter和getter方法在Java持久化类中,其成员变量通常不使用基本数据类型,而是Java中的对应引用类型持久化类通常是可序列化的持久化类通常具备一个ID类型属性,使用Id标识,将实体类型和persistence.xml关联persistence-unit对应伪对象数据库,实体类对应伪对象数据库中的一个具体对象类型.一个persistence-unit所能管理的对象类型,默认情况下对应了包含p
13、ersistence.xml配置文件的jar包中所有被Entity标注的Java实体类。总结:基于JPA ORM的伪对象数据库,通常包括如下几个部分:持久化类定义、表定义、persistence-unit定义,11.2 JPA程序初步,操作伪面向对象数据库使用OQL(Object Query Language)。OQL是大小写敏感的。/*01*/package client;/*02*/*03*/import javax.persistence.*;/*04*/import java.util.*;/*05*/import.*;/*06*/*07*/public class test/*08*
14、/*09*/public static void main(String args)throws Exception/*10*/*11*/EntityManagerFactory factory=/*12*/Persistence.createEntityManagerFactory(mydb,null);/*13*/EntityManager manager=factory.createEntityManager();/*14*/try/*15*/*16*/createPerson(manager);/*17*/showAll(manager);/*18*/*19*/finally/*20*
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 持久 对象 数据库

链接地址:https://www.31ppt.com/p-6509815.html