JPA框架学习笔记

JPA

概念

是什么

​ JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据他的作用是简化对mysql的操作

优点

  • JPA的主要目标之一就是提供更加简单的编程模型
  • JPA拥有可媲美JDBC的查询能力
  • JPA的查询语言是面向对象而非面向数据库的,它以面向对象的自然语法构造查询语句

缺点

  • 不能干预sql语句的生成

  • 一个项目中,如果对sql语句的优化要求比较高,不适合用JPA

  • 如果一张表的数据非常大的时候也不能用JPA

ORM

​ ORM框架采用元数据来描述对象一关系映射细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中。只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中

配置

导入依赖

		<!-- hibernate的包 -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.3.8.Final</version>
        </dependency>
        <!-- hibernate对于jpa的支持包 -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>4.3.8.Final</version>
        </dependency>
        <!-- mysql驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
        <!-- junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

配置数据库

img

实例

实体

img

保存操作

img

缓存

一级缓存

​ 同一个entityManager中不用重复在数据库中查询同一个数据

​ Customer customer1 = entityManager.find(Customer.class, 1);

​ Customer customer2 = entityManager.find(Customer.class, 1);

​ *只会查询一次因为第二次其实已经在一级缓存中了

二级缓存

​ 节点:若 JPA 实现支持二级缓存,该节点可以配置在当前的持久化单元中是否启用二级缓存,可配置如下值:

  • ALL:所有的实体类都被缓存
  • NONE:所有的实体类都不被缓存.
  • ENABLE_SELECTIVE:标识 @Cacheable(true) 注解的实体类将被缓存
  • DISABLE_SELECTIVE:缓存除标识 @Cacheable(false) 以外的所有实体类
  • UNSPECIFIED:默认值,JPA 产品默认值将被

​ 1.添加jar包

	hibernate-ehcache

​ 2.修改persistence.xml配置文件

​ 3.添加ehcache.xml配置文件

​ 4.启动ehcache.xml配置文件,在persistence.xml配置文件中配置

<!-- 二级缓存相关 -->
 
<property name="hibernate.cache.use_second_level_cache" value="true" />
 
<property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory" />
 
<property name="hibernate.cache.use_query_cache" value="true" />

​ 5.需要缓存的类上添加注解

img

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值