前言:创建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. [BZOJ5407]girls

    也是CF985G... 容斥+三元环计数 CF数据太弱啦 vis没赋初值-1竟然过了QAQ 所以又调了我半个小时才搞掉QAQ 数数真难QAQ 记得要写#include<vector>!!! ...

  2. JDBC简单总结

    几种常用数据库的JDBC URL 对于 Oracle 数据库连接,采用如下形式: jdbc:oracle:thin:@localhost:1521:sid 对于 SQLServer 数据库连接,采用如 ...

  3. PHP 配置多站点多目录

    Apache配置httpd.conf #增加监听端  可以通过netstat -n -a查看端口是否开启# Listen: Allows you to bind Apache to specific ...

  4. 正确读取resources目录下的文件

    问题描述:本地可以正常读取areacode.json文件,打成jar包在测试环境找不到该文件. 问题代码: static { StringBuffer strbuffer = new StringBu ...

  5. 转载:Eclipse下的java工程目录

    原文链接:https://www.cnblogs.com/milantgh/p/4029003.html 对新手来讲,一个Java工程内部的多个文件夹经常会让大家困惑.更可恶的是莫名其妙的路径问题,在 ...

  6. Session过期,如何跳出iframe框架页的问题

    跳出框架页,实际上是更改父页面地址.那么更改父页面地址很简单即: window.parent.location='/Login/loginindex'; 这里说session过期,那么浏览器端的任何请 ...

  7. textarea 根据光标位置添加内容

    // 获取焦点 let txt = document.getElementById("countRule"); let temp = txt.value; txt.focus(); ...

  8. 26 October in 614

    Practice tower 有 \(N\,(2\le N\le 600000)\) 块砖,要搭一个 \(N\) 层的塔,要求:如果砖 \(A\) 在砖 \(B\) 上面,那么 \(A\) 不能比 \ ...

  9. [CSP-S模拟测试]:w(树上DP)

    题目背景 $\frac{1}{4}$遇到了一道水题,双完全不会做,于是去请教小$D$.小$D$看了${0.607}^2$眼就切掉了这题,嘲讽了$\frac{1}{4}$一番就离开了.于是,$\frac ...

  10. tp5怎么验证手机号码

    直接上干货