博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JPA框架学习
阅读量:4326 次
发布时间:2019-06-06

本文共 3017 字,大约阅读时间需要 10 分钟。

                  JPA入门

1.JPA认识

    1.1什么是JPA

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

      1.2JQP的优缺点

        优点: 1.JPA的主要目标之一就是提供更加简单的编程模型

               2.JPA拥有可媲美JDBC的查询能力

               3.JPA的查询语言是面向对象而非面向数据库的,它以面向对象的自然语法构造查询语句

        缺点:    1.不能干预sql语句的生成

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

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

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

 

        1.3JPA的配置

          1.首先导入依赖的包

4.0.0
com
wjx
1.0-SNAPSHOT
org.hibernate
hibernate-core
4.3.8.Final
org.hibernate
hibernate-entitymanager
4.3.8.Final
mysql
mysql-connector-java
5.1.6
junit
junit
4.12
pss
org.apache.maven.plugins
maven-compiler-plugin
1.8
1.8

然后Ctrl +Shift+s大开页面配置JPA

 

 点击加号在下面找到JPA文件

然后在点击生成的JPA里面的加号找到加号直接配置生成文件  拖到你 工程里面

 放在resource里面

 

在进行一下配置框起来的地方改成你数据库的名字

 

      1.4第一个JPA程序

           1.1创建一个实体类对象

给于字段提供get  set方法

提供一个测试类进行测试

 

 然后就是完成一个用JPA对数据库的CRUD(分层domain  dao )

      1.6 一级缓存和二级缓存

 

一级缓存:比如:

 

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

 

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

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

但是,

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

//开启事务

transaction.begin();

entityManager = entityManagerFactory.createEntityManager();
transaction = entityManager.getTransaction();

//提交事务

transaction.commit();

//关闭事务

entityManager.close();

Customer customer2 = entityManager.find(Customer.class, 1);
这样他就回打印两次

二级缓存,就是要在不同的entityManager中,只查询一次

 

1.7单表映射配置细节

 

@Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; //要求:主键,使用数据库的自动生成策略 @Column(length = 20,nullable = false,unique = true,name ="username") private String name; //要求:varchar(20),数据库名称为username,不能为空,唯一 private String password; @Column(insertable = false,columnDefinition = "int(10) default(25)") private Integer age = 25; //要求:默认值是25,在插入数据时不允许覆盖(添加数据时不操作该字段) private Boolean sex;// 数据库没有布尔类型,bit对象 @Column(columnDefinition = "decimal (19,2)") private BigDecimal salary;// 19,2 @Column(updatable = false) @Temporal(TemporalType.TIMESTAMP) private Date createTime;//包含年月日时分秒,不允许修改 @Temporal(TemporalType.DATE) private Date birthday;//包含年月日 @Temporal(TemporalType.TIME) private Date time;//包含时分秒 @Lob private String text;//这是一个大文本 @Transient private String temp;//这一个字段不要同步到数据库

 

转载于:https://www.cnblogs.com/1999wang/p/11235401.html

你可能感兴趣的文章
阶段3 2.Spring_03.Spring的 IOC 和 DI_6 spring中bean的细节之三种创建Bean对象的方式
查看>>
阶段3 2.Spring_04.Spring的常用注解_3 用于创建的Component注解
查看>>
阶段3 2.Spring_04.Spring的常用注解_2 常用IOC注解按照作用分类
查看>>
阶段3 2.Spring_09.JdbcTemplate的基本使用_5 JdbcTemplate在spring的ioc中使用
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_02.ssm整合之搭建环境
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_3、快速创建SpringBoot应用之手工创建web应用...
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_04.ssm整合之编写SpringMVC框架
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_5、SpringBoot2.x的依赖默认Maven版本...
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_08.ssm整合之Spring整合MyBatis框架
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_9、SpringBoot基础HTTP其他提交方法请求实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_12、SpringBoot2.x文件上传实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_19、SpringBoot个性化启动banner设置debug日志...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_20、SpringBoot2.x配置全局异常实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第5节 SpringBoot部署war项目到tomcat9和启动原理讲解_23、SpringBoot2.x启动原理概述...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_21、SpringBoot2.x配置全局异常返回自定义页面...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_32..SpringBoot2.x持久化数据方式介绍...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_34、SpringBoot整合Mybatis实操和打印SQL语句...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_35、事务介绍和常见的隔离级别,传播行为...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_40、Redis工具类封装讲解和实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_37、分布式缓存Redis介绍...
查看>>