Java Persistence API(JPA)是 Java EE 的一部分,用于将 Java 对象映射到关系型数据库。它提供了一种规范的方式来进行对象-关系映射(ORM),使得开发者可以使用面向对象的方式来访问和操作数据库。

以下是 JPA 的一些核心概念和用法:

1. 实体类(Entity Class):
实体类是映射到数据库表的 Java 类。实体类通常使用 @Entity 注解进行标记,表示这是一个 JPA 实体。
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class Book {
    @Id
    private Long id;
    private String title;
    private String author;

    // Getters and Setters
}

2. 主键(Primary Key):
JPA 实体类通常需要标识一个字段作为主键,使用 @Id 注解进行标记。

3. 映射关系:
JPA 支持多种映射关系,包括一对一、一对多、多对一和多对多。这些关系可以使用 @OneToOne、@OneToMany、@ManyToOne 和 @ManyToMany 注解进行定义。

4. 实体管理器(Entity Manager):
实体管理器负责实体的生命周期和持久化。通过 EntityManager 可以执行数据库操作,如插入、更新、删除和查询。
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class JpaExample {
    public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("examplePU");
        EntityManager em = emf.createEntityManager();

        // 创建实体对象
        Book book = new Book();
        book.setId(1L);
        book.setTitle("Java Persistence with JPA");
        book.setAuthor("John Doe");

        // 将实体对象持久化到数据库
        em.getTransaction().begin();
        em.persist(book);
        em.getTransaction().commit();

        // 查询实体对象
        Book retrievedBook = em.find(Book.class, 1L);
        System.out.println("Title: " + retrievedBook.getTitle());

        em.close();
        emf.close();
    }
}

5. JPQL(Java Persistence Query Language):
JPQL 是一种基于对象的查询语言,用于执行与实体相关的查询。JPQL 查询类似于 SQL,但是它是面向对象的。
import javax.persistence.Query;
// ...

Query query = em.createQuery("SELECT b FROM Book b WHERE b.author = :author");
query.setParameter("author", "John Doe");

List<Book> books = query.getResultList();

6. 事务管理:
JPA 支持事务管理,通过 EntityTransaction 可以控制事务的开始、提交和回滚。
em.getTransaction().begin();

// 执行数据库操作

em.getTransaction().commit(); // 提交事务
// 或者
em.getTransaction().rollback(); // 回滚事务

7. 持久化单元(Persistence Unit):
持久化单元是一个单独的配置单元,包含了一组实体类和配置信息。通过 persistence.xml 文件进行配置。
<persistence-unit name="examplePU" transaction-type="RESOURCE_LOCAL">
    <class>com.example.Book</class>
    <properties>
        <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/mydatabase"/>
        <property name="javax.persistence.jdbc.user" value="username"/>
        <property name="javax.persistence.jdbc.password" value="password"/>
        <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
    </properties>
</persistence-unit>

以上是一个简单的 JPA 教程,涵盖了基本的概念和用法。在实际应用中,可能还需要考虑缓存、延迟加载、性能调优等方面的问题。


转载请注明出处:http://www.zyzy.cn/article/detail/456/Java