对象关系映射(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创建的用户表。