前言:创建EntityManager对象,需要先创建创建EntityManagerFactory对象

方式一:直接通过persistenceUnitName创建

 String persistenceUnitName = "Jpa-1";
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName);

方式二:通过persistenceUnitName和properties一起创建

 String persistenceUnitName = "Jpa-1";
Map<String, Object> properties = new HashMap<String, Object>();
properties.put("hibernate.show_sql", false);
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName, properties);

2.创建一个测试增删改查的JPA项目

 package com.jtfr.jpa.test;

 import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence; import org.junit.After;
import org.junit.Before;
import org.junit.Test; public class JpaTest { private EntityManagerFactory entityManagerFactory;
private EntityManager entityManager;
private EntityTransaction transaction; @Before
public void create(){
entityManagerFactory = Persistence.createEntityManagerFactory("Jpa-1");
entityManager = entityManagerFactory.createEntityManager();
transaction = entityManager.getTransaction();
transaction.begin();
} @Test
public void testFind(){
System.out.println("没问题");
} @After
public void end(){
transaction.commit();
entityManager.close();
entityManagerFactory.close();
}
}

3.常用增删改查方法解释

查询方法

find方法:方法调用时,已经发出了sql进行查询

 @Test
public void testFind(){
CustomerJpa customerJpa = entityManager.find(CustomerJpa.class, 100);
System.out.println("--------分割线作用:区分确实是find的时候就发出了sql语句---------");
System.out.println(customerJpa.toString());
}

getReference方法:方法调用时,返回的是代理对象,当代理对象使用时候才真正发送sql查询数据库,需要注意“懒加载”问题

 @Test // 类似Hibernate的load方法
public void testGetReference(){
CustomerJpa customerJpa = entityManager.getReference(CustomerJpa.class, 100);
System.out.println("返回的是代理对象"+customerJpa.getClass().getName());
System.out.println("--------getReference方法调用的时候没有发sql-------------");
System.out.println(customerJpa.toString());
}

persist方法:方法调用为保存一条数据

 // 类似 Hibernate 的 save 方法
@Test
public void testPersist(){
CustomerJpa customerJpa = new CustomerJpa();
customerJpa.setId(300100);
customerJpa.setLasName("夕阳游子");
customerJpa.setEmail("23228858@qq.com");
customerJpa.setAge(15);
customerJpa.setCreateTime(new Date());
customerJpa.setBirth(new Date());
entityManager.persist(customerJpa); // 注意不能设置 Id
}

三、JPA增删改查常用方法的更多相关文章

  1. spring boot(十五)spring boot+thymeleaf+jpa增删改查示例

    快速上手 配置文件 pom包配置 pom包里面添加jpa和thymeleaf的相关包引用 <dependency> <groupId>org.springframework.b ...

  2. JavaJDBC【三、增删改查】

    获取数据库连接后,可进行增删改查操作 语句生成: Statement s = con.createStatement(sql); //生成语句 PreparedStatement ps = (Prep ...

  3. Maybatis的一些总结(三:增删改查)

    回顾一个点 之前不懂这句: UserMapper userMapper = sqlSession.getMapper(UserMapper.class); 现在理解了一点点,相当于实现了userMap ...

  4. java连接mysql数据库 三 实现增删改查操作

    同以前一样,先写一个数据库打开和关闭操作类 public class DBConnection { String driver = "com.mysql.jdbc.Driver"; ...

  5. MyBatis数据持久化(三)增删改查

    上篇文章中我们使用mybatis成功建立数据库会话,并从表中查询出相应的数据,本文在此基础上介绍MyBatis另外几种操作,即插入.修改.删除记录. 1.修改User.xml文件,增加几条sql语句: ...

  6. SpringBoot JPA + H2增删改查示例

    下面的例子是基于SpringBoot JPA以及H2数据库来实现的,下面就开始搭建项目吧. 首先看下项目的整体结构: 具体操作步骤: 打开IDEA,创建一个新的Spring Initializr项目, ...

  7. 【讲义提纲】以一个实战新闻cms增删改查demo为例,给学院国创队伍培训php

    PHP实战基础——以一个新闻cms的增删改查为例 一.        环境配置 二.        数据库创建 三.        增删改查demo 连接数据库 <?php $link=mysq ...

  8. springMVC之增删改查

    一.核心原理 1. 用于发送请求给server: /home.htm 2. 请求被DispatchServlet拦截到 3. DispatchServlet通过HandleMapping检查url有没 ...

  9. spring boot2+jpa+thymeleaf增删改查例子

    参考这遍文章做了一个例子,稍微不同之处,原文是spring boot.mysql,这里改成了spring boot 2.Oracle. 一.pom.xml引入相关模块web.jpa.thymeleaf ...

随机推荐

  1. java super与this关键字图解、java继承的三个特点

  2. UVa1636 Headshot 【迁移自洛谷博客】

    说明:小蒟蒻hkk现在正在做一些概率的题目,由于这方面和数学还有点关系,所以需要一些数学的思维,也需要表述出来,如夏军所述"把自己给讲懂",所以写了些blog,主要为帮助自己理解. ...

  3. create-react-app按需引入antd-mobile

    1.引入 react-app-rewired 并修改 package.json 里的启动配置: npm i react-app-rewired@2.0.2-next.0 // 需要安装低版本 否则np ...

  4. find命令进阶(三):xargs

    The xargs command performs an interesting function. It accepts input from standard input and convert ...

  5. 报错——selinux配置文件修改错误导致无法启动虚拟机

    selinux配置文件修改错误导致无法启动虚拟机 问题 错误修改配置文件 [root@centos73 ~]# cat /etc/selinux/config # This file controls ...

  6. Java Web学习总结(3)Servlet(二)

    一,Servlet访问URL映射配置 由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml ...

  7. POJ 3525 Most Distant Point from the Sea (半平面交)

    Description The main land of Japan called Honshu is an island surrounded by the sea. In such an isla ...

  8. 【HDOJ6579】Operation(线性基)

    题意:给定一个数列a,给定两种操作: 1.询问[l,r]区间内最大的xor和 2.n++,a[n]赋值为x 要求强制在线 n,m<=5e5,a[i]<2^30 思路:同CF1100F 固定 ...

  9. html中ul,ol和li的区别

    ul是无序列表,全称是unordered list,先来个例子:    ●张三    ●李四    ●王二    ●刘五   ol是有序列表 ,全称是ordered list,同样举个例子:  1.张 ...

  10. (转)k8s存储之NFS

    转:https://www.cnblogs.com/DaweiJ/articles/9131762.html 1 NFS介绍 NFS是Network File System的简写,即网络文件系统,NF ...