《传智播客黎活明JPA完整版.ppt》由会员分享,可在线阅读,更多相关《传智播客黎活明JPA完整版.ppt(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育 JPAJPA开发开发讲师:黎活明讲师:黎活明高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育 什么是JPAJPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据。他的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate、TopLink等ORM框架各自为营的局面。值得注意的是,JPA是在充分吸收了现有Hibernate、TopLink等ORM框架的基础上发展而来的,具有易
2、于使用、伸缩性强等优点。从目前的开发社区的反应上看,JPA受到了极大的支持和赞扬,其中就包括了Spring与EJB3.0的开发团队。着眼未来几年的技术走向,JPA作为ORM领域标准化整合者的目标应该不难实现。高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育 什么是JPAJPA的总体思想和现有Hibernate、TopLink等ORM框架大体一致。总的来说,JPA包括以下3方面的技术:lORM映射元数据映射元数据JPA支持支持XML和和JDK 5.0注释(也可译作注解)两种元数据的形式,注释(也可译作注解)两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持
3、久化到数据库表中。lJava持久化持久化API用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者可以从繁琐的JDBC和SQL代码中解脱出来。l查询语言查询语言这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。提示:JPA不是一种新的ORM框架,他的出现只是用于规范现有的ORM技术,他不能取代现有的Hibernate、TopLink等ORM框架。相反,在采用在采用JPA开发时,我们仍将开发时,我们仍将使用到这些使用到这些ORM框架,只是此时开发出来的应用不再依赖于某个持久化提供商框架,只是此时开发出来的应用不再依
4、赖于某个持久化提供商。应用可以在不修改代码的情况下在任何JPA环境下运行,真正做到低耦合,可扩展的程序设计。高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育 开发开发JPA依赖的依赖的jar文件文件Hiberante核心包(8个文件)hibernate-distribution-3.3.1.GA-hibernate3.jarlibbytecodecglibhibernate-cglib-repack-2.1_3.jarlibrequired*.jarHiberante注解包注解包(3个文件个文件):hibernate-annotations-3.4.0.GA-hibernat
5、e-annotations.jarlibejb3-persistence.jar、hibernate-commons-annotations.jarHibernate针对针对JPA的实现包的实现包(3个文件个文件):hibernate-entitymanager-3.4.0.GA-hibernate-entitymanager.jarlibtestlog4j.jar、slf4j-log4j12.jar高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育 JPA的配置文件的配置文件JPA规范要求在类路径的类路径的META-INF目录下目录下放置persistence.xml,文件的
6、名称是固定的,配置模版如下:高级软件人才实作培训专家高级软件人才实作培训专家!JPA总结总结l首先,首先,JPA不是不是ORM框架,而是框架,而是SUN官方提出的官方提出的JAVA持久化规范。持久化规范。JPA整合了现有的整合了现有的Hibernate、TopLink等等ORM框架,具有易于使用、框架,具有易于使用、伸缩性强等优点。下面我们就来学习关于伸缩性强等优点。下面我们就来学习关于JPA的知识。的知识。l1.JPA规范要求在类路径的规范要求在类路径的META-INF目录下放置目录下放置persistence.xml,文件的名称是固定的,配置模版可见,文件的名称是固定的,配置模版可见hib
7、ernate-entitymanager开发开发包包l2.JPA ORM映射元素数据有映射元素数据有XML和注解两种方式,这里我们学习基和注解两种方式,这里我们学习基于注解的方式,那么我们来谈谈于注解的方式,那么我们来谈谈JPA有哪些常用的注解有哪些常用的注解l1)在实体在实体bean中用注解中用注解Entity来指定实体以让来指定实体以让jpa知道生成数据库中知道生成数据库中的表的表l2)在实体在实体bean中用注解中用注解Column(length,nullable,name)指定数据库指定数据库中的表的字段的长度,是否为空即字段的名字中的表的字段的长度,是否为空即字段的名字l3)在实体类
8、的前面用注解在实体类的前面用注解Table(name=xx)指定生成表的名字指定生成表的名字高级软件人才实作培训专家高级软件人才实作培训专家!JPA总结总结l4)在实体类中用注解在实体类中用注解Temporal(TemporalType.Date)指定生日的时间指定生日的时间类型类型l5)Enumerated(EmumType.STRING/保存到数据库中是索引还是保存到数据库中是索引还是字符串字符串)注解指定枚举类型注解指定枚举类型l6)Lob声明属性对应的数据库字段为大文本类型,可以存放大的数声明属性对应的数据库字段为大文本类型,可以存放大的数据据(文本和字节文本和字节)l7)Transi
9、ent不成为持久化字段及不跟数据库中的字段形成映射不成为持久化字段及不跟数据库中的字段形成映射l8)Basic(fetch=FetchType.LAZY)/是否把数据装载到内存中延迟是否把数据装载到内存中延迟初始化,第一次访问的时候在加载数据,一般用在大数据存放初始化,第一次访问的时候在加载数据,一般用在大数据存放l9)Embeddable指定联合组键指定联合组键高级软件人才实作培训专家高级软件人才实作培训专家!JPA总结总结l3.JPA的增删改查:的增删改查:l1)读取数据不要开启事务,只要有更改数据的动作才需要开启事务读取数据不要开启事务,只要有更改数据的动作才需要开启事务l2)增加数据:
10、增加数据:em.persist(new Person(老黎老黎);/插入插入l3)删除数据:删除数据:em.remove(person);/删除(注意有外键约束时,需删除(注意有外键约束时,需要先解除外键约束才能删除)要先解除外键约束才能删除)l4)更新数据:更新数据:l方法一:方法一:Person person=em.find(Person.class,1);lperson.setName(老黎老黎);(1).跟事务关联在一起了跟事务关联在一起了(2)对象处于托管对象处于托管状态状态l方法二:方法二:Person person=em.find(Person.class,1);l em.cle
11、ar();/把试题管理器中的所有实体变成游离状态把试题管理器中的所有实体变成游离状态l person.setName(老黎老黎);/现在还是不可以,实体还是处于游离现在还是不可以,实体还是处于游离状态状态l em.merge(person);/把游离状态中的实体把游离状态中的实体bean同步到数据库同步到数据库高级软件人才实作培训专家高级软件人才实作培训专家!JPA总结总结l5)查看数据:查看数据:l方法一:方法一:Person person=em.find(Person.class,1);/查看数据,查看数据,1为为对象在数据库中的对象在数据库中的id值值l方法二:方法二:Person pe
12、rson=em.getReference(Person.class,1);/没有没有值不出现异常,只值不出现异常,只person.getName()的时候报异常的时候报异常l em.refresh(person);/进行数据库刷新,拿出最新的数据进行数据库刷新,拿出最新的数据l4.JPA中四种数据库状态:(中四种数据库状态:(1)新建)新建:刚刚new出对象来的时候出对象来的时候(2)托管托管:从数据库中查出来的时候从数据库中查出来的时候(3)游离)游离(即脱管即脱管)(4)删除)删除l5.JPA的查询语句:的查询语句:Query query=em.createQuery(select o from Person o);/必须有必须有select o,id=等于后面不要直接写值以免等于后面不要直接写值以免sql注入注入l(1)匿名查询用匿名查询用:idl(2)未参数查询未参数查询?1即:即:where o.id=?1/指明指明?的值从索引的值从索引1开始开始lquery.getSingleResult