📜  配置JPA和初始化的数据(1)

📅  最后修改于: 2023-12-03 14:58:10.001000             🧑  作者: Mango

配置JPA和初始化的数据

什么是JPA?

JPA(Java Persistence API)是Java EE 5规范之一,用于管理Java应用程序中的数据持久化,开发人员可以通过它将Java对象映射为数据库表中的数据。

配置JPA
  1. 添加依赖

在你的Maven或Gradle构建文件中添加以下依赖:

Maven
<!-- JPA -->
<dependency>
    <groupId>javax.persistence</groupId>
    <artifactId>javax.persistence-api</artifactId>
    <version>2.2</version>
</dependency>
<!-- Hibernate -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.4.27.Final</version>
</dependency>
Gradle
// JPA
implementation 'javax.persistence:javax.persistence-api:2.2'
// Hibernate
implementation 'org.hibernate:hibernate-core:5.4.27.Final'
  1. 配置persistence.xml

在项目的src/main/resources目录下创建名为persistence.xml的文件,并配置以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence https://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"
             version="2.2">
 
    <persistence-unit name="myPersistenceUnit" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <class>com.example.entity.User</class>
  
        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/testdb"/>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value="password"/>
            
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
            <property name="hibernate.hbm2ddl.auto" value="create"/>
            
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>
        </properties>
    </persistence-unit>
  
</persistence>

在这个示例配置中:

  • persistence-unit元素用于定义持久化单元,它有一个名字——这个名字在应用程序中引用。
  • provider元素定义JPA规范的持久化提供者,这里使用Hibernate。
  • class元素指定JPA标注的实体类。
  • properties元素可以配置JPA和Hibernate的属性。
初始化数据

经常需要在应用程序启动时初始化一些测试数据或默认数据。以下是初始化数据的一种方法。

  1. 创建数据初始化类
@Component
public class TestDataInit implements ApplicationListener<ContextRefreshedEvent> {
 
    @Autowired
    private UserRepository userRepository;
 
    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {
        initData();
    }
     
    private void initData() {
        User user1 = new User();
        user1.setName("user1");
        userRepository.save(user1);
 
        User user2 = new User();
        user2.setName("user2");
        userRepository.save(user2);
    }
}

上面的代码演示了创建数据初始化类的基本步骤。

  1. 实例化和保存初始化数据

initData()方法中,我们实例化并保存初始化数据。这里我们将使用一个自定义的UserRepository接口,它继承了JpaRepository,这个接口是由Spring Data JPA提供的。这样,即使没有定义任何UserRepository实现,我们也可以使用save()方法来保存数据。

public interface UserRepository extends JpaRepository<User, Long> {
}

上面的代码演示了如何定义一个UserRepository接口,这个接口利用Spring Data JPA提供的save()方法来保存数据。然后,我们可以在TestDataInit类中注入UserRepository并使用save()来保存初始化数据。

结论

配置JPA和初始化数据是Java应用程序中非常重要的任务。通过这篇文章,我们介绍了如何配置JPA和初始化数据。现在你可以通过这个知识点来构建牢固健壮的Java应用程序了。