JPA的entityManager的find、getReference、persisit、remove方法的使用
场景
JPA入门简介与搭建HelloWorld(附代码下载):
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103473937
在上面博客中搭建好JPA的HelloWorld后,再新建test包,包下新建Junit测试类
然后将JPA所需的API对象等声明
private EntityManagerFactory entityManagerFactory;
private EntityManager entityManager;
private EntityTransaction transaction;
然后编写每个测试方法执行前与执行后的方法
@BeforeEach
public void init(){
entityManagerFactory = Persistence.createEntityManagerFactory("HelloJPA");
entityManager = entityManagerFactory.createEntityManager();
transaction = entityManager.getTransaction();
transaction.begin();
} @AfterEach
public void destroy(){
transaction.commit();
entityManager.close();
entityManagerFactory.close();
}
注:
博客主页:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
测试find方法
@Test
public void testFind() {
Customer customer = entityManager.find(Customer.class, );
System.out.println("-------------------------------------"); System.out.println(customer);
}
上面方法通过主键ID为3查询到实体对象
类似于 hibernate 中 Session 的 get 方法。

测试getReference方法
@Test
public void testGetReference(){
Customer customer = entityManager.getReference(Customer.class, );
System.out.println(customer.getClass().getName());
System.out.println("-------------------------------------");
System.out.println(customer);
}

同上也是查询到主键Id为3的实体对象。
类似于 hibernate 中 Session 的 load 方法。
测试persist方法
@Test
public void testPersistence(){
Customer customer = new Customer();
customer.setAge();
customer.setEmail("BADAO@163.com");
customer.setLastName("LIUMANG");
entityManager.persist(customer); }
上面方法将构建的对象存入数据库。
类似于 hibernate 的 save 方法. 使对象由临时状态变为持久化状态。
和 hibernate 的 save 方法的不同之处: 若对象有 id, 则不能执行 insert 操作,
而会抛出异常.。
测试remove方法
@Test
public void testRemove(){ Customer customer = entityManager.find(Customer.class, );
entityManager.remove(customer);
}
类似于 hibernate 中 Session 的 delete 方法.
把对象对应的记录从数据库中移除。
但注意: 该方法只能移除 持久化 对象. 而 hibernate 的 delete 方法实际上还可以移除
游离对象。
JPA的entityManager的find、getReference、persisit、remove方法的使用的更多相关文章
- JPA的entityManager的find方法与getReference方法的区别
场景 JPA入门简介与搭建HelloWorld(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103473937 ...
- EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解
前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...
- Datatable删除行的Delete和Remove方法
在C#中,如果要删除DataTable中的某一行,大约有以下几种办法: 1,使用DataTable.Rows.Remove(DataRow),或者DataTable.Rows.RemoveAt(ind ...
- remove() 方法的兼容问题
一直以为jq的remove()方法是兼容的,今天才发现,原来ie的写法不一样,特作此记录. removeNode方法的功能是删除一个节点,语法为node.removeNode(false)或者node ...
- Python列表的remove方法的注意事项
为何没有删除列表中的全部元素? 解释: 按照执行顺序,第一个空格被删除之后,后面的元素会前移(变成['空格','空格','12','23']),指针下一次会指向新列表的第二个元素(即初始状态的第三个空 ...
- ArrayList调用remove方法需要注意的地方
ArrayList中有remove 方法和 removeAll方法, ArrayList中不仅继承了接口Collection中的remove方法,而且还扩展了remove方法. Collection中 ...
- Iterator的remove方法可保证从源集合中安全地删除对象(转)
如果对正在被迭代的集合进行结构上的改变(即对该集合使用add.remove或clear方法),那么迭代器就不再合法(并且在其后使用该迭代器将会有ConcurrentModificationExcept ...
- 如果是除去末尾特定字符或字符串:TrimEnd方法性能优于Remove方法
测试用例--除去末尾特定字符或字符串,Remove方法和TrimEnd方法的比较 结论: 如果是除去末尾特定字符或字符串:TrimEnd方法性能优于Remove方法 具体测试用例如下: Stopwat ...
- jquery 清空动态append添加元素,remove方法
<html> <head> <script type="text/javascript" src="jquery-1.9.1.js" ...
随机推荐
- C# 自然周,月,季度计算。
/// <summary> /// 判断时间是否和服务器时间是一天 /// </summary> /// <param name="cs">&l ...
- luogu P1650 田忌赛马 |贪心
题目描述 我国历史上有个著名的故事: 那是在2300年以前.齐国的大将军田忌喜欢赛马.他经常和齐王赛马.他和齐王都有三匹马:常规马,上级马,超级马.一共赛三局,每局的胜者可以从负者这里取得200银币. ...
- 剑指offer-31:整数中1出现的次数(从1到n整数中1出现的次数)
参考: https://troywu0.gitbooks.io/interview/整数中出现1的次数(从1到n整数中1出现的次数).html 题目描述 求出1~13的整数中1出现的次数,并算出100 ...
- 赌十包辣条,你一定没见过这么通透的ThreadLocal讲解
1.看个热闹 鉴于普罗大众都喜欢看热闹,咱们先来看个热闹再开工吧! 场景一: 中午了, 张三.李四和王五一起去食堂大菜吃饭.食堂刚经营不久,还很简陋,负责打菜的只有一位老阿姨. 张三:我要一份鸡腿. ...
- socket AcceptAsync方法的使用
AcceptAsync与Accept很大的不一样 Accept是一个同步 阻塞的已经封装好底层的方法 AcceptAsync是一个异步 非阻塞未封装的底层连接入口,需要手动填入连接代码用于优化sock ...
- Day 09 函数
目录 函数 函数的基本概念 为何使用函数 定义函数 什么是参数(形参,parameter) 定义函数的三种形式 无参函数 有参函数 空函数 函数的参数 形参和实参(parameter & ar ...
- 【CentOS7】常用命令
[CentOS7]常用命令 转载:https://www.cnblogs.com/yangchongxing/p/10646640.html 目录 ========================== ...
- 【FastJson】使用学习
FastJson使用学习 1.json转object.object转json List<CompanyLoopPicture> list = new ArrayList<Compan ...
- vivado三人表决仿真
概述 下面以三人表决电路的verilog仿真来了解一下vivado软件的使用. 编写设计文件 首先可以在开始的界面通过create new project来新建工程,也可以通过file-->pr ...
- HyperLedger Fabric 1.4 生产环境动态添加组织及节点
网易云课堂视频在线教学,地址:https://study.163.com/course/introduction/1209401942.htm 1.1 操作概述 在“kafka生产环境部署” ...