SpringDataJPA在Entity中常用的注解介绍

以下是关于Spring Data JPA的常用注解的详细介绍及示例说明。

@Entity

@Entity 是一个用于将 Java 类映射到数据库表的注解。该注解必须在实体类上声明,用于指示该类是实体的类,需要创建一个数据库表来映射该实体类。例如:

@Entity
@Table(name = "users")
public class User {
    // 实体类的属性和方法...
}

在上面的示例中,@Table指示数据库表的名称为“users”,则必须在数据库中保证该表存在,否则,JPA在查询和操作数据时将会抛出异常。

@Id

@Id 是用于设置实体类的主键标识符的注解。该注解必须标注在实体类的属性上,并通常用于与主键列进行映射。例如:

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue
    private Long id;
    // 实体类的其他属性和方法...
}

在上面的示例中,@GeneratedValue用于指示系统自动分配标识符的值。@Id@GeneratedValue一同使用,将Java类属性映射为数据库主键列。该策略适用于被称为自动递增的数据库主键列。

@Column

@Column 是用于指示实体属性应该映射到数据库表中的列的注解。该注解必须在实体类的属性上指定,用于与数据库表的列进行联接映射。例如:

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue
    private Long id;

    @Column(name = "name")
    private String username;

    @Column(nullable = false)
    private Integer age;

    // 实体类的其他属性和方法...
}

在上面的示例中,@Column指定了数据库表中nameage属性的映射关系:

  • name属性映射为数据库表name列;
  • age属性映射为数据库表age列,并将nullable参数设置为false,表示该列不允许为null值。

@OneToMany 和 @ManyToOne

@OneToMany@ManyToOne 是用于建立实体之间关系映射的注解。

@OneToMany

@OneToMany 注解用于建立一对多关系。通常位于多的一方,即拥有外键的实体类上。例如:

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue
    private Long id;

    @OneToMany(mappedBy = "user")
    private List<Order> orders;

    // 实体类的其他属性和方法...
}

@Entity
@Table(name = "orders")
public class Order {
    @Id
    @GeneratedValue
    private Long id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id", referencedColumnName = "id")
    private User user;

    // 实体类的其他属性和方法...
}

在上面的示例中,@OneToMany注解指示了用户实体可以有多个订单。mappedBy属性指定了关系的维护方,即orders属性在order类中代表了用户的一方。

@ManyToOne

@ManyToOne则用于建立多对一关系。通常位于多的一方的实体类属性上。例如:

@Entity
@Table(name = "orders")
public class Order {
    @Id
    @GeneratedValue
    private Long id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id", referencedColumnName = "id")
    private User user;

    // 实体类的其他属性和方法...
}

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue
    private Long id;

    @OneToMany(mappedBy = "user")
    private List<Order> orders;

    // 实体类的其他属性和方法...
}

在上面的示例中,@ManyToOne注解指示了订单实体属于一个用户。@JoinColumn注解用于指定外键列的名称和引用实体类的列的名称。

示例说明

示例1:使用@Entity和@Id注解

首先创建一个实体类 Product,其中包含 idname 两个属性:

@Entity
@Table(name = "products")
public class Product {
    @Id
    @GeneratedValue
    private Long id;

    @Column(name = "name")
    private String name;

    // 省略其他属性和方法...
}

该实体类使用 @Entity@Table 注解指定与数据库表的映射。@Id@GeneratedValue 注解将 id 属性映射到数据库表中的主键列,表示其值由系统自动生成。

示例2:使用@ManyToOne和@OneToMany注解

接下来创建一个包含订单详细信息的实体类 OrderDetail,其中包含 idquantitypriceorderId四个属性,用于表示某个订单中某个商品的数量、单价和总价等信息。@ManyToOne注解用于将订单详细信息与订单关联,@JoinColumn注解则用于指示外键列的名称和引用订单的列的名称:

@Entity
@Table(name = "order_details")
public class OrderDetail {
    @Id
    @GeneratedValue
    private Long id;

    @Column(nullable = false)
    private Integer quantity;

    @Column(nullable = false)
    private Double price;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "order_id", referencedColumnName = "id")
    private Order order;

    // 省略其他属性和方法...
}

接下来创建一个订单的实体类 Order,其中包含 idorderNumberorderDetails 三个属性。该实体类使用 @OneToMany注解将订单及其详细信息关联,并指定了关系的维护方是 orderDetails

@Entity
@Table(name = "orders")
public class Order {
    @Id
    @GeneratedValue
    private Long id;

    @Column(name = "order_number")
    private String orderNumber;

    @OneToMany(mappedBy = "order")
    private List<OrderDetail> orderDetails;

    // 省略其他属性和方法...
}

在上述示例中,@OneToMany 注解指示了订单实体具有多个订单详细信息。 mappedBy属性指定了关系的维护方,即 orderDetails 属性在 OrderDetail 类中代表了订单的一方。

注意: 示例2是双向关联,所以需要在每个实体类上添加对方的属性,所以 Order 类中有一个名为orderDetailsList 属性用于表示订单所包含的详细信息,而 OrderDetail 类中则有一个 order 属性用于表示该详细信息所对应的订单。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringDataJPA在Entity中常用的注解介绍 - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月3日

相关文章

  • spring的几个重要类和接口(详解)

    下面详细讲解”spring的几个重要类和接口(详解)”。 概述 Spring框架是一个开源框架,它为开发企业级应用提供了一系列的解决方案。其中,Spring的几个重要类和接口是我们应用框架时必须要掌握的重点。下面我们一起来看看这几个重要的类和接口。 核心接口 ApplicationContext ApplicationContext是Spring框架中最为重…

    Java 2023年5月19日
    00
  • SpringMVC执行过程详细讲解

    以下是关于“SpringMVC执行过程详细讲解”的完整攻略,其中包含两个示例。 SpringMVC执行过程详细讲解 SpringMVC是一个基于M模式的Web框架,它可以帮助我们快速开发Web应用程序。本文将介绍SpringMVC的执行过程。 执行过程 SpringMVC的执行过程可以分为以下几个步骤: 客户端发送请求到DispatcherServlet。 …

    Java 2023年5月16日
    00
  • java实现简单的客户信息管理系统

    针对这个问题,我可以给出如下完整攻略: 1. 确定功能需求 作为一款客户信息管理系统,需要具备以下基本功能: 添加客户信息 修改客户信息 删除客户信息 查询客户信息 在确定了功能需求之后,就要开始考虑如何实现了。 2. 设计数据库表结构 由于需要操作客户信息,我们需要设计数据库表来承载客户信息。以下是一个简单的示例表结构: CREATE TABLE cust…

    Java 2023年5月19日
    00
  • 超好用轻量级MVC分页控件JPager.Net

    JPager.Net是一款轻量级MVC分页控件,它可以帮助我们轻松地实现数据分页功能。以下是使用JPager.Net的攻略: 安装 JPager.Net可以通过NuGet安装。在Visual Studio中选择“工具”->“NuGet包管理器”->“程序包管理器控制台”,在控制台中输入以下命令进行安装: Install-Package JPage…

    Java 2023年5月19日
    00
  • Java SpringBoot开发小技巧详解

    JavaSpringBoot开发小技巧详解 简介 Java Spring Boot是一种轻量级开发框架,可以简化Java Web应用程序的开发过程。在Spring Boot中,许多常见的配置都可以自动配置,从而使得开发者可以专注于业务逻辑而不必浪费太多时间在初始化过程上。本文将介绍几个在Java Spring Boot开发中常用的小技巧,以及它们的使用方法。…

    Java 2023年5月15日
    00
  • Spring Boot Maven 打包可执行Jar文件的实现方法

    实现Spring Boot Maven打包成可执行Jar文件的实现方法,主要有两种。 1. 使用Spring Boot Maven插件打包 首先,需要在pom.xml文件中,引入Spring Boot Maven插件,具体如下: <build> … <plugins> … <plugin> <groupId&…

    Java 2023年5月20日
    00
  • 如何将SpringBoot项目打成 war 包并部署到Tomcat

    下面是将SpringBoot项目打成war包并部署到Tomcat的详细攻略。 1. 添加依赖 首先,我们需要在SpringBoot项目中添加Tomcat的依赖,以及修改pom.xml文件中的打包方式为war。 <!– 添加Tomcat的依赖 –> <dependency> <groupId>org.springfram…

    Java 2023年6月2日
    00
  • spring boot整合CAS Client实现单点登陆验证的示例

    介绍一下如何使用Spring Boot整合CAS Client实现单点登录验证。 准备工作 在maven或gradle中引入Spring Boot Cas Starter。 配置CAS Server地址。 示例一:配置客户端登录方式 配置CAS Client,添加以下配置: cas: server-url-prefix: https://cas.server…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部