Spring Data JPA-该教程演示了Java对象关系映射如何作为Java中管理关系数据库的一方法

对象关系映射(ORM)
Java对象与数据库中的表进行了映射。类中的字段对应于数据库中的字段。
在这里插入图片描述

@Entity 
@Table(name = "t_user")
public class User  {
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String firstName;
    private String lastName; 
    private String mobile;
    private String email; 
}

这显示了如何将类中的字段映射到表中的字段。

我们用注释班级 @Entity。我们还可以指定表名。类中的字段将对应于数据库中的字段。

主要的ORM框架包括Hibernate,Ibatis,EclipseLink等。

JPA代表Java Persistence API。它是将Java对象映射到关系数据库的标准。所有框架都遵守此规范。在这里,我们将使用符合JPA规范的Hibernate。所有注解喜欢 @Entity, @Table, @Id这是我们上面的JPA框架的构成部分使用。

当我们谈论Spring数据JPA时,它为开发人员简化了一切。Spring Data JPA使数据访问和CRUD操作变得非常简单。我们可以有一个称为存储库的Java接口,它扩展了JPA存储库,该存储库包含实现中附带的许多finder方法。Spring Data JPA易于实现分页,排序,审计,甚至还支持本机查询操作。

让我们看一下第一个实现的一个小例子。

我使用以下内容:

JDK 1.8

IDE-IntelliJ

数据库-PostgreSQL

PostgreSQL工具-PgAdmin。

我们将使用与上述相同的用户表。我将其命名为 t_user。让我们看看文件夹的结构。

带有用户实体的实体包。

带有UserRepository的存储库软件包。

用户实体

package com.notyfyd.entity;
import javax.persistence.*; 
​
@Entity 
@Table(name = "t_user") 
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Long id;
    private String firstName; 
    private String lastName; 
    private String mobile; 
    private String email; 
    public Long getId() { 
        return id; 
    } 
    public void setId(Long id) { 
        this.id = id;
    } 
    public String getFirstName() { 
        return firstName;
    } 
    public void setFirstName(String firstName) { 
        this.firstName = firstName; 
    } 
    public String getLastName() { 
        return lastName; 
    } 
    public void setLastName(String lastName) { 
        this.lastName = lastName;
    } 
    public String getMobile() {
        return mobile; 
    } 
    public void setMobile(String mobile) { 
        this.mobile = mobile; 
    }
    public String getEmail() { 
        return email; 
    } 
    public void setEmail(String email) { 
        this.email = email;
    } 
}

该@Entity批注指定类是一个实体,映射到数据库表。在这里,我们用“”来指定表名。@Table annotation.我们将其命名为“ t_user”。

注意:将表名称作为User来玩得开心。您将得到错误。一探究竟。

@Id批注用于将其标记为主键,我们将其用作标识的生成类型。所有值都是按顺序自动生成的,而无需使用单独的序列。

UserRepository


package com.notyfyd.repository;
import com.notyfyd.entity.User; 
import org.springframework.data.jpa.repository.JpaRepository; 
import org.springframework.stereotype.Repository;


@Repository
public interface UserRepository extends JpaRepository<User, Long> {
存储库的扩展JpaRepository使我们可以访问许多查找器方法和删除方法。它还具有返回Optional非常方便的方法,因为我们不必检查null值。它们具有类似isPresent这样的方法,对于检查Object是否存在非常有用。

application.properties文件

server.port = 2003
spring.datasource.driver-class-name = org.postgresql.Driver
spring.datasource.url = jdbc:postgresql://192.168.64.6:30432 / jpa-test
spring.datasource.username = postgres
spring.datasource.password =根
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto =创建

服务器端口是运行应用程序的端口。

除非使用其他数据库,否则无需更改驱动程序名称。

show-sql将为您提供打印到控制台的由Hibernate创建的SQL语句。很高兴看到您的理解。

我正在使用, ddl-auto = create因为Hibernate将自动为我创建表。确保您已经创建了数据库。

我对POM文件的依赖:

<dependencies> 
        <dependency> 
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId> 
        </dependency> 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId> 
        </dependency> 
        <dependency>
            <groupId>org.postgresql</groupId> 
            <artifactId>postgresql</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency> 
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope> 
            <exclusions> 
                <exclusion>
                    <groupId>org.junit.vintage</groupId> 
                    <artifactId>junit-vintage-engine</artifactId> 
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

您可以运行该应用程序,并查看由Hibernate创建的用户表。

在这里插入图片描述

原创文章 115 获赞 0 访问量 2985

猜你喜欢

转载自blog.csdn.net/qq_41806546/article/details/105543782