JPA基本使用,java工作三年面试题

本文详细介绍了JPA的核心组件,包括Persistence、EntityManagerFactory和EntityManager的使用,以及事务管理、主键生成策略。通过示例展示了如何进行增删改查操作,并探讨了JPA的复杂查询,如JPQL的使用、分页、条件和排序查询。
摘要由CSDN通过智能技术生成

JPA的API介绍


Persistence对象: 主要作用是用于获取EntityManagerFactory对象的,通过调用该类的createEntityManagerFactory静态方法,根据配置文件中持久化单元名称创建EntityManagerFactory。

String unitName = “myJpa”;

EntityManagerFactory factory= Persistence.createEntityManagerFactory(unitName);

EntityManagerFactory:主要用来创建 EntityManager 实例,由于EntityManagerFactory 是一个线程安全的对象(即多个线程访问同一个EntityManagerFactory 对象不会有线程安全问题),并且EntityManagerFactory 的创建极其浪费资源,所以在使用JPA编程时,我们可以对其进行优化,满足一个项目中只有一个EntityManagerFactory。

//创建实体管理类

EntityManager em = factory.createEntityManager();

EntityManager: 是完成持久化操作的核心对象,通过调用 EntityManager可以将实体类转化为持久化对象。EntityManager对象在一组实体类与底层数据源之间进行 O/R 映射的管理。它可以用来管理和更新 Entity Bean, 根椐主键查找 Entity Bean, 还可以通过JPQL语句查询实体。

我们可以通过调用EntityManager的方法完成获取事务,以及持久化数据库的操作方法说明:

  • getTransaction : 获取事务对象

  • persist : 保存操作

  • merge : 更新操作

  • remove : 删除操作

  • find/getReference : 根据id查询

EntityTransaction: 在 JPA 规范中,EntityTransaction是完成事务操作的核心对象,对于EntityTransaction在我们的java代码中承接的功能比较简单begin:开启事务commit:提交事务rollback:回滚事务

测试代码:

@Test

public void test() {

/**

  • 创建实体管理类工厂,借助Persistence的静态方法获取

  •   其中传递的参数为持久化单元名称,需要jpa配置文件中指定
    

*/

EntityManagerFactory factory = Persistence.createEntityManagerFactory(“myJpa”);

//创建实体管理类,工厂对象

EntityManager em = factory.createEntityManager();

//获取事务对象,通过实体管理类工厂获取实体管理器

EntityTransaction tx = em.getTransaction();

//开启事务,获取事务对象

tx.begin();

//完成增删改查操作

Customer c = new Customer();

c.setCustName(“客户1”);

c.setCustIndustry(“程序员”);

//保存操作

em.persist©;

//提交事务(回滚事务)

tx.commit();

//释放资源

em.close();

factory.close();

}

JPA中的主键生成策略:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值