JPA (Java Persistence API) 就是对象和数据库表进行映射关联的工具

JPA (Java Persistence API) 是一种 Java 对象关系映射(ORM)标准,它允许开发者通过 Java 面向对象编程的方式来操作数据库,而无需直接编写 SQL 语句。JPA 提供了统一的接口和规范,使得不同的数据库管理系统(如 Oracle、MySQL、PostgreSQL 等)能够以统一的方式被访问。

JPA 的主要组件包括:

  1. EntityManager:它是 JPA 的核心部分,用于管理实体对象生命周期、查询数据库以及事务处理。
  2. Entity 和 @Entity 注解:表示数据表的实体类,包含字段映射到表列,关系映射等信息。
  3. Query 和 Criteria API:用于执行复杂的查询操作,提供了一种声明式查询机制。
  4. Metamodel:描述了 Entity 类和它们的关系,不需要显式创建数据库结构。

使用 JPA,开发者可以编写类似下面这样的代码:

 

// 创建 EntityManager 实例 EntityManager em = entityManagerFactory.createEntityManager(); // 查询操作 List<User> users = em.createQuery("SELECT u FROM User u", User.class).getResultList(); // 保存或更新数据 User user = new User(); user.setName("John"); em.persist(user); // 提交事务 em.getTransaction().commit();

JPA 通过 EntityManager 来处理数据库事务。在 JPA 中,你可以使用以下几种方式进行事务控制:

  1. 手动事务管理
    • beginTransaction():开始一个新的事务。
    • commit():提交事务,如果所有操作都成功完成。
    • rollback():回滚事务,当发生异常或错误时。
try { 
EntityManager em = ...; 
em.getTransaction().begin(); // 执行数据库操作 // 如果没有异常... em.getTransaction().commit(); 
} catch (Exception e) { 
    if (em.getTransaction() != null) { 
        em.getTransaction().rollback(); =} throw e; 
}

  1. 声明式事务管理: Spring Boot 可以通过 @Transactional 注解自动管理事务,简化了配置过程。只需要将 @Transactional 应用于需要事务的方法上。
 

@Transactional

public void someBusinessMethod() { // 这里的所有数据库操作都会在事务范围内 }

在事务结束时,Spring 会根据业务方法的执行结果自动提交或回滚事务。

@OneToMany 是 Java Persistence API (JPA) 中的一个关联映射注解,它用于一对多的关系,即一个实体可以拥有多条属于另一个实体的数据。通常用于表示一个“拥有者”类(也叫父实体)与一组“被拥有者”类(子实体)之间的联系。

例如,在学生-课程的关系中,一个学生可以有多个课程,这时可以在学生实体上添加 @OneToMany 注解,指向课程实体:

@Entity public class Student { 
@Id 
private Long id; 

private String name; 

@OneToMany(mappedBy = "student")
 private List<Course> courses; 

} 


@Entity 
public class Course { 
@Id
 private Long id; 

private String courseName; 

@ManyToOne @JoinColumn(name = "student_id") // 关联到Student表的id字段
 private Student student; // mappedBy属性告诉JPA我们是在学生这一端设置关联 
}

在这里,courses 是一个集合,每个 Course 实例都有一个关联的 student 属性。当我们保存或更新 Student 对象时,JPA会自动维护与其关联的 Course 对象列表。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值