资源描述:
《JPA入门例子(采用JPA的hibernate实现版本).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、JPA入门例子(采用JPA的hibernate实现版本)(1)、JPA介绍: JPA全称为JavaPersistenceAPI,Java持久化API是Sun公司在JavaEE5规范中提出的Java持久化接口。JPA吸取了目前Java持久化技术的优点,旨在规范、简化Java对象的持久化工作。使用JPA持久化对象,并不是依赖于某一个ORM框架。 为什么要使用JAP? 在说为什么要使用JPA之前,我们有必要了解为什么要使用ORM技术。ORM是Object-Relation—Mapping,即对
2、象关系影射技术,是对象持久化的核心。ORM是对JDBC的封装,从而解决了JDBC的各种存在问题:a)繁琐的代码问题用JDBC的API编程访问数据库,代码量较大,特别是访问字段较多的表的时候,代码显得繁琐、累赘,容易出错。例如:PreparedStatementpstmt=con.prepareStatment("insertintoaccountvalue(?,?,?,?,?,?,?,?,?)”);ORM则建立了Java对象与数据库对象之间的影射关系,程序员不需要编写复杂的SQL语句,直接操作Java对象即可,
3、从而大大降低了代码量,也使程序员更加专注于业务逻辑的实现.b)数据库对象连接问题关系数据对象之间,存在各种关系,包括1对1、1对多、多对1、多对多、级联等。在数据库对象更新的时候,采用JDBC编程,必须十分小心处理这些关系,以保证维持这些关系不会出现错误,而这个过程是一个很费时费力的过程。ORM建立Java对象与数据库对象关系影射的同时,也自动根据数据库对象之间的关系创建Java对象的关系,并且提供了维持这些关系完整、有效的机制。c)系统架构问题JDBC属于数据访问层,但是使用JDBC编程时,必须知道后台是用什
4、么数据库、有哪些表、各个表有有哪些字段、各个字段的类型是什么、表与表之间什么关系、创建了什么索引等等与后台数据库相关的详细信息。使用ORM技术,可以将数据库层完全隐蔽,呈献给程序员的只有Java的对象,程序员只需要根据业务逻辑的需要调用Java对象的Getter和Setter方法,即可实现对后台数据库的操作,程序员不必知道后台采用什么数据库、有哪些表、有什么字段、表与表之间有什么关系.d) 性能问题采用JDBC编程,在很多时候存在效率低下的问题。pstmt=conn。prepareStatement(”inse
5、rt intouser_infovalues(?,?)”); for(inti=0;i<1000; i++){ pstmt。setInt(1,i);ﻫ pstmt.setString(2,"User"+i.toString()); pstmt.executeUpdate(); }以上程序将向后台数据库发送1000次SQL语句执行请求,运行效率较低。采用ORM技术,ORM框架将根据具体数据库操作需要,会自动延迟向后台数据库发送SQL请求,OR
6、M也可以根据实际情况,将数据库访问操作合成,尽量减少不必要的数据库操作请求。 JPA是目前比较流行的一种ORM技术之一,所以他拥有ORM技术的各种特点,当然他还有自己的一些优势:1标准化ﻫ JPA是JCP组织发布的JavaEE标准之一,因此任何声称符合JPA 标准的框架都遵循同样的架构,提供相同的访问 API,这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA框架下运行。ﻫ2对容器级特性的支持ﻫ JPA框架中支持大数据集、事务、并发等容器级事务,这使得JPA超越了简单持久化框架的局限,在企业
7、应用发挥更大的作用.ﻫ3简单易用,集成方便ﻫ JPA的主要目标之一就是提供更加简单的编程模型:在JPA框架下创建实体和创建Java类一样简单,没有任何的约束和限制,只需要使用javax。persistence.Entity进行注释;JPA的框架和接口也都非常简单,没有太多特别的规则和设计模式的要求,开发者可以很容易的掌握。JPA基于非侵入式原则设计,因此可以很容易的和其它框架或者容器集成。ﻫ4 可媲美JDBC的查询能力ﻫ JPA的查询语言是面向对象而非面向数据库的,它以面向对象的自然语法构造查询语句,可以看
8、成是HibernateHQL的等价物.JPA定义了独特的JPQL(JavaPersistenceQueryLanguage),JPQL是EJBQL的一种扩展,它是针对实体的一种查询语言,操作对象是实体,而不是关系数据库的表,而且能够支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有SQL才能够提供的高级查询特性,甚至还能够支持子查询。ﻫ5支持面向对象的高级特性 J