截图
简介
这是jpa ppt,包括了JPA概述,JPA概念,实体,ORM注解,使用JPA,常用类,示例,JPQL等内容,欢迎点击下载。
jpa ppt是由红软PPT免费下载网推荐的一款课件PPT类型的PowerPoint.
第12讲 Java Persistence API (JPA)基础 主要内容 JPA概述 JPA概念 实体 ORM注解 使用JPA 常用类 示例 JPQL JPA概述 Java Persistence API 用于对象持久化的API 是Java EE平台标准的 ORM 规范,使得应用程序以统一的方式访问持久层。 JPA概述-续 ORM Object Relational Mapping Java 对象与关系数据库表间的映射 JPA 通过 JDK 注解或 XML 描述对象-关系表的映射关系 并将运行期的实体对象持久化到数据库中 Sun希望整合ORM技术,统一各种ORM框架的规范,实现天下归一。 JPA提供了现有ORM实现框架功能的核心子集 JPA概述-续 JPA包含三方面的技术 ORM映射元数据: JPA支持XML和 JDK 注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中。 JPA的API: 用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的 JDBC和 SQL代码中解脱出来。 查询语言JPQL: 这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的 SQL语句紧密耦合。 实体(Entity) 一个实体是一个轻量级的持续化域对象。 通常一个实体表示关系数据库中的一张表 实体的每个实例对应表中的一行 实体(Entity) 实体基本注解-1 @Entity 将对象标注为一个实体,表示需要保存到数据库中 @Table 默认情况下类名即为表名,通过name属性显式指定表名 实体基本注解-2 @Id 对应的属性是表的主键 @GeneratedValue 主键的产生策略,通过strategy属性指定; 默认情况下,JPA自动选择一个最适合底层数据库的主键生成策略可供选择的策略 IDENTITY:表自增键字段(SqlServer对应策略,Oracle不支持这种方式) AUTO: JPA自动选择合适的策略,是默认选项(MySql对应策略); SEQUENCE:通过序列产生主键,通过@SequenceGenerator注解指定序列名(如Oracle的Sequence, MySql不支持这种方式); TABLE:通过表产生主键,使用该策略可以使应用更易于数据库移植。不同的 JPA实现商生成的表名是不同的。 实体基本注解-3 @EmbeddedId或@IdClass 组合关键字 @Column 属性对应的表字段 实体基本注解-4 关联关系 @OneToOne @OneToMany @ManyToOne @ManyToMany @OneToOne(单向) @OneToOne(双向) @OneToMany @OneToMany @ManyToOne @ManyToMany 使用JPA 使用JPA持久化对象步骤 创建EntityManagerFactory; 创建和销毁都相当耗费资源,通常一个系统内一个数据库仅创建一个 创建EntityManager; 创建实体类,使用annotation来描述实体类跟数据库表之间的一一映射关系. 使用JPA API完成数据增加、删除、修改和查询操作(find、merge、remove、persist) 使用JPA JPA示例-描述 实现对用户的CRUD操作 代码文件结构 JPA示例-准备 准备 一个JPA实现框架 EclipseLink 开源 前身 TopLink http://www.eclipse.org/eclipselink/#jpa 安装(见实验指导书) JPA示例-persistence.xml 若安装成功,则项目中会出现persistence.xml文件,需要配置相关信息 JPA示例- EntityManagerFactory 创建EntityManagerFactory公共类 JPA示例-EntityManager UserDao.java —增加/修改 JPA示例-EntityManager UserDao.java —删除 JPA的生命周期 实体的状态 新建态new 新创建的实体对象,尚未拥有持久化主键,没有和一个持久化上下文关联起来 受控态managed 已经拥有持久化主键并和持久化上下文建立了联系 游离态detached 拥有持久化主键,但尚未和持久化上下文建立联系 删除态removed 拥有持久化主键,已经和持久化上下文建立联系,但已经被安排从数据库中删除 JPQL Java Persistence Query Language(Java持久化查询语言) 是一种可移植的查询语言,可以被编译成所有主流数据库服务器上的SQL JPQL是面向对象的,通过面向对象而非面向数据库的查询语言查询数据,在Java空间对类和对象进行操作,避免程序的SQL语句紧密耦合 使用 javax.persistence.Query接口代表一个查询实例 JPQL—创建Query实例 通过EntityManager来生成Query实例: EntityManager提供的使用JPQL(或原生SQL)创建Query的方法 JPQL—使用Query接口 Query接口执行数据查询的部分方法: getSingleResult():单一查询结果 getResultList():多个查询结果 setParameter: Query setParameter(int position, Object value):通过参数位置号绑定查询语句中的参数 Query setParameter(String name, Object value):绑定命名参数 setMaxResults:设置返回的最大结果数 executeUpdate:新增、删除或更改的语句,通过该方法执行 使用JPQL示例 UserDao.java —查询 JPQL基础 JPQL支持三种语句类型,可以在查询中使用JPQL执行选择、更新、删除操作: JPQL--条件表达式和操作 JPQL--使用JPQL函数 字符串函数 JPQL--使用JPQL函数 算数函数 时间函数 JPQL--投影 构造器函数 你可以创建一个新的对象作为查询结果。这个对象不要求是实体,但要有一个构造器,它的顺序与类型与SELECT 语句一致。 例 JPQL-其它查询 使用聚合: 聚合函数:AVG、COUNT、MAX、MIN和SUM 通过GROUP BY和HAVING分组 排序:ORDER BY 使用子查询 可以在WHERE和HAVING子句中使用子查询,EJB3.1的FROM子句中不支持; 可以在子查询中使用IN、EXISTS、ALL、ANY和SOME 联接实体 关联联结:INNER JOIN 外联结:LEFT JOIN或LEFT OUTER JOIN 获取联结:JOIN FETCH JPQL-- Update和Delete 大数据量的更新、删除,可以用 EntityManager进行实体的更新操作,也可以通过查询语言执行数据表的字段更新,记录删除的操作 UPDATE User u SET u.name = :name WHERE u.id = :userid DELETE FROM User u WHERE u.name = :username and sex=:sex 小结 JPA基本概念 JPA、实体类、ORM 实体类中ORM常用注解作用 @entity @id @table @column …… 使用JPA的关键类和步骤 EntityManagerFactory EntityManager JPQL基本概念和用法
展开