jpa的认识

JPA-01

  • jpa介绍

1、什么是jpa?

       jpa:Java Persistence API它就是orm的规范(对象关系映射(ORM) 规范

2、jpa与Hibernate的关系

   JPA它是一个orm规范,而hibernate是其最完美的实现,因为JPA和hibernate都是同一个作者

3、jpa与JDBC的优缺点

1.JPA它底层是基于jdbc实现的,它是面向对象的编程,如果你要操作crud,直接调用其api文档传递对象,它会自动生成对应的sql语句

       优点:

          1.操作非常方便

          2.它给我们提供了缓存(1级缓存/2级缓存)

       缺点:因为sql语句是自动生成,所以性能不好控制

       2.JDBC它是操作数据库的唯一技术,它是各大数据库厂商实现的,我们在做crud的时候,必须手动编写sql语句

       优点:性能好控制

       缺点:操作太过于麻烦了

       jdbc和jpa都不适合用于大型项目,只适用于小型项目,中大型项目还是使用mybatis来做

二、jpa程序及配置

     1、使用jpa的步骤

1.导入jar包

                     2.配置jpa的核心文件

                            1).配置持久化单元

                            2).配置jpa的基本属性

                                          1.用户名

                                          2.密码

                                          3.驱动

                                          4.url地址

                                          5.方言

                                          6.是否显示sql语句

                                          7.建表策略

                     3.创建domain

                     4.抽取EntityManagerFactory对象----》因为整个应用系统中,我们只需要一个该对象就可以了

                     核心方法:

                     添加: persist

                     修改: merge

                     删除: remove()只能传递对象

                     查询: find/query

     2、ORM的概念

持久 英文即 persistence。就是把数据保存到可掉电式存储设备中。持久层就是dao层,原来叫数据访问层,现在一般叫持久层,是一个意思

Object Relational Mapping, 对象关系映射框架,ORM 就是通过将Java对象映射到数据库表,通过操作Java对象,就可以完成对数据表的操作

三、jpa的CRUD

     1、提取工具类

public class JPAUtils {

  // 保证EntityManagerFactory是单例

    private static EntityManagerFactory entityManagerFactory;

    static {

    try {

      // 对应配置文件里面的persistence-unit name="cn.itsource.jpa"

     entityManagerFactory = Persistence.createEntityManagerFactory("cn.itsource.jpa");

    } catch (Exception e) {

     e.printStackTrace();

     throw new RuntimeException("解析配置文件或者映射配置出现异常:" + e.getMessage());

    }

  }

  public static EntityManager getEntityManager() {

    return entityManagerFactory.createEntityManager();

  }

}

     2、jpa里面的CRUD方法

1.persist持久化方法,保存方法

      2.merge方法,修改,必须要有id值

3.remove方法,删除,必须要有id值,先从数据库查出来,还要判断这个对象是否为空

4.查询方法可以不要事务,提高性能

5.find方法,通过主键获取domain对象,传入的参数一定要和domain的id的类型匹配

6.jpql是JPA的查询语言,hql是hibernate的查询语言

                    jpql:不能出现表名,列名,*,只能是Java的类名,属性名,别名

                    如果在jpql出现的sql关键字,大小写不敏感,Java的类名,属性名,别名大小写敏感

     3、jpa的建表策略

                     1.create: 先删除表,再创建表     使用场景: 测试阶段,学习阶段

                     2.create-drop: 先删除表,再创建表,再删除表(EntityManagerFactory要关闭)  使用场景: 测试阶段,学习阶段

                     3.update: 只增不减(使用场景:真实开发就用它)

       4.validate:校验,检查domain中的字段和表中的列是否对应的(个数,类型,名字)  校验标准是根据domain来判断的(使用场景:别人把表给你创建好了,你要根据表生成对应的domain)

四、jpa的核心对象

     1、Persistence

主要负责创建EntityManagerFactory对象

     2、EntityManagerFactory

它是一个重量级对象

                                   1.二级缓存

                                   2.连接池

                                   3.管理着所有的doamin

                                   4.解析xml,把xml里面的值都放到EntityManagerFactory中

                                   5.它存储预定义jpql语句

              使用EntityManagerFactory的规则,遵循1:1:1  1个项目对应一个EntityManagerFactory对应1个数据库   

              EntityManagerFactory的生命周期: 随着tomcat的启动而创建,tomcat关闭而销毁  EntityManagerFactory是线程安全的

     3、EntityManager

它是一个轻量级对象

                                   1.一级缓存

                                   2.连接对象

              EntityManager的生命周期: 应该随着你的访问而创建,访问结束之后再销毁  EntityManager是线程不安全的

     4、Transactions事务对象

在同一个EnittyManager中拿到都是同一个事务对象

五、缓存

     1、一级缓存

              EntityManager的一级缓存

       查询对象执行的原理: 通过oid在一级缓存中去查询对应的对象,如果没找到,则发送sql语句到数据库中进行查找,它会把查找的对象放到一级缓存中

              如果在一级缓存中找到了,直接引用

              一级缓存命中的条件

                     1.同一个oid

                     2.同一个EntityManager

                     3.同一个EntityManagerFactory

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值