SpringData-Jpa-Base(二) @Entity 和 @Table 注解

本文详细解析SpringData JPA中的实体注解,包括@Entity、@Table及其子注解的使用方法,如name、indexes、uniqueConstraints等,特别强调了lombok注解在属性Getter和Setter中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringData-Jpa-Base

3 注解

说明: 对于实体类中属性的 Setter 和 Getter 均使用 lombok 注解实现

3.1 @Entity

  • 指定实体类
  • 必须指定@Id
3.1.1 name

指定实体名称(表名):

  • 没有指定name属性且没有使用@Table,命名为类名生成
  • 指定name属性且没有使用@Table,命名为name属性value值
  • 指定了name属性且使用了@Table指定name,命名以@Table的name的value

3.2 @Table

类型: ElementType.TYPE

代码示例

package com.yui.study.springdatajpa.note.entity;

import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;

@Setter
@Getter
@Entity
@Table(name = "student",
        uniqueConstraints = {@UniqueConstraint(name = "unique_stu_idCardNo", columnNames = "idCardNo")},
        indexes = {@Index(name = "index_stu_loginId", columnList = "studNo", unique = true),
                @Index(name = "index_stu_age_height_weight", columnList = "age,height,weight")},
        catalog = "spring_data_jpa", schema = "removal")
public class StudentEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    private String idCardNo;

    private int studNo;

    private int age;

    private double height;

    private double weight;
}


生成数据库语句

CREATE TABLE spring_data_jpa.student (
	id BIGINT NOT NULL auto_increment,
	age INTEGER NOT NULL,
	height DOUBLE PRECISION NOT NULL,
	id_card_no VARCHAR ( 255 ),
	NAME VARCHAR ( 255 ),
	stud_no INTEGER NOT NULL,
	weight DOUBLE PRECISION NOT NULL,
	PRIMARY KEY ( id ) 
) ENGINE = INNODB;
CREATE INDEX index_stu_age_height_weight ON spring_data_jpa.student ( age, height, weight );
ALTER TABLE spring_data_jpa.student ADD CONSTRAINT unique_stu_idCardNo UNIQUE ( id_card_no );
ALTER TABLE spring_data_jpa.student ADD CONSTRAINT index_stu_loginId UNIQUE ( stud_no );
3.2.1 name

name 属性指定表名

3.2.2 indexes

声明表的索引

 indexes = {@Index(name="index_stu_loginId", columnList = "studNo", unique = true),
        @Index(name="index_stu_age_height_weight", columnList = "age,height,weight", unique = false)})

声明索引,赋值索引数组,用 @Index 来声明创建索引

3.2.2.1 @index

name: 指定索引名称
columnList: 指定索引对应的属性名称(映射为字段),可创建联合索引,如 index_stu_age_height_weight 所示
unique: 指定索引是否为唯一索引,默认为false,如果为true,功能与属性 uniqueConstraints 一直,见 3.2.2

3.2.3 uniqueConstraints

声明表的唯一索引

### Spring Boot 3 集成 OceanBase 教程 为了使应用程序能够连接到 OceanBase 数据库,在 Spring Boot 3 中集成 OceanBase 主要涉及配置数据源以及调整必要的依赖项。 #### 添加 Maven 或 Gradle 依赖 对于基于 Maven 的项目,需在 `pom.xml` 文件中加入如下依赖: ```xml <dependency> <groupId>com.oceanbase</groupId> <artifactId>oceanbase-jdbc-driver</artifactId> <version>指定版本号</version> </dependency> <!-- 如果使用的是Spring Data JPA --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> ``` 对于采用 Gradle 构建工具的情况,则应在 `build.gradle` 文件内添加相应的依赖声明: ```groovy implementation 'com.oceanbase:oceanbase-jdbc-driver:指定版本号' // 若应用JPA则还需引入此依赖 implementation 'org.springframework.boot:spring-boot-starter-data-jpa' ``` #### 应用程序属性文件设置 编辑项目的 `application.properties` 或者 `application.yml` 来定义数据库连接参数。这里给出 YAML 版本的例子: ```yaml spring: datasource: url: jdbc:oceanbase://localhost:2881/your_database_name?charset=UTF-8&useSSL=false username: root_user password: your_password driver-class-name: com.oceanbase.jdbc.Driver ``` 以上配置指定了用于访问 OceanBase 实例的数据源 URL、用户名、密码以及其他必要选项[^4]。 #### 创建实体类服务层逻辑 创建与表结构对应的 Java 类,并通过 @Entity 注解标记它们作为持久化对象。之后可以编写 Repository 接口来操作这些实体,利用 Spring Data 提供的功能简化 CRUD 操作。 例如,假设有一个名为 User 的表格,那么就可以这样设计模型类仓库接口: ```java @Entity @Table(name="users") public class User { @Id private Long id; private String name; // getter setter methods... } public interface UserRepository extends JpaRepository<User,Long>{ } ``` 最后一步是在服务组件里注入上述存储库并实现业务处理方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值