三、JPA增删改查常用方法

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

方式一:直接通过persistenceUnitName创建

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

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

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

 

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

 

 1 package com.jtfr.jpa.test;
 2 
 3 import javax.persistence.EntityManager;
 4 import javax.persistence.EntityManagerFactory;
 5 import javax.persistence.EntityTransaction;
 6 import javax.persistence.Persistence;
 7 
 8 import org.junit.After;
 9 import org.junit.Before;
10 import org.junit.Test;
11 
12 public class JpaTest {
13     
14     private EntityManagerFactory entityManagerFactory;
15     private EntityManager entityManager;
16     private EntityTransaction transaction;
17 
18     @Before
19     public void create(){
20         entityManagerFactory = Persistence.createEntityManagerFactory("Jpa-1");
21         entityManager = entityManagerFactory.createEntityManager();
22         transaction = entityManager.getTransaction();
23         transaction.begin();
24     }
25 
26     @Test
27     public void testFind(){
28         System.out.println("没问题");
29     }
30     
31     @After
32     public void end(){
33         transaction.commit();
34         entityManager.close();
35         entityManagerFactory.close();
36     }
37 }

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

查询方法

 find方法:方法调用时,已经发出了sql进行查询
1 @Test
2 public void testFind(){
3     CustomerJpa customerJpa = entityManager.find(CustomerJpa.class, 100);
4     System.out.println("--------分割线作用:区分确实是find的时候就发出了sql语句---------");
5     System.out.println(customerJpa.toString());
6 }

 

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

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

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

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

 

转载于:https://www.cnblogs.com/jtfr/p/10376315.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值