Spring Data JPA--注解大全/常用注解--使用/详解

本文详细介绍了SpringDataJPA的常用注解,包括@Entity、@Table、@Id、@GeneratedValue等,帮助开发者理解如何进行实体映射和主键生成策略。此外,还提到了@Transient、@Column等注解的用途,以及如何通过注解控制字段的持久化和查询行为。

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

原文网址:Spring Data JPA--注解大全/常用注解--使用/详解_IT利刃出鞘的博客-CSDN博客

简介

Spring Data JPA是一个常用的ORM框架,本文介绍它的注解及其用法。

注解概述

注解

说明

@Entity

声明类为实体。

@Table

声明表名。

@Entity和@Table一般一起使用,如果表名和实体类名相同,那么@Table可以省略。

@Basic

指定非约束明确的各个字段。

@Embedded

用于注释属性,表示该属性的类是嵌入类。

( @Embeddable 用于注释Java类的,表示类是嵌入类)。

@ld

指定的类的属性,一个表中的主键。

@GeneratedValue

    指定如何标识属性可以被初始化。

    如@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "repair_seq"):表示主键生成策略是sequence。还有Auto、ldentity、 Native 等。

@Transient

    表示该属性并非一个数据库表的字段的映射,ORM框架将忽略该属性。

    如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,即它是不持久的,为虚拟字段。

@Column

    指定持久属性,即字段名。

    若字段名与列名相同,则可以省略。

    如:@Column(length=11,name="phone",nullable=false,columnDefinition = "varchar(11) unique comment'电话号码'")

@SequenceGenerator

    指定在 @SequenceGenerator 注解中指定的属性的值。

    它创建一个序列。

@TableGenerator

    在数据库生成一张表来管理主键生成策略。

@AccessType

    这种类型的注释用于设置访问类型。

    如果设置@AccessType(FIELD),则可以直接访问变量,并且不需要使用Gtter和Stter方法,但必须为public属性。

    如果设置@AccessType(PROPERTY),则通过Getter和Setter方法访问Entity的变量。

@UniqueConstraint

指定的字段和用于主要或辅助表的唯一约束。

@ColumnResult

可以参考使用select子句的SQL查询中的列名。

@NamedQueries

指定命名查询的列表。

@NamedQuery

指定使用静态名称的查询。

@Basic

    指定实体属性的加载方式。

    如@Basic(fetch=FetchType.LAZY)。

@Entity

被@Entity标注的实体类将会被JPA管理控制,在程序运行时,JPA会识别并映射到指定的数据库表。

属性含义示例
name指定实体类名称,默认为当前实体类的非限定名称。

@Entity(name="XXX")

对应的JQPL的实体类名是XXX。

例如:

Entity

import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.Entity;

@Data
@NoArgsConstructor
@Entity(name = "XXX")
public class User {
}
package com.example.demo.user.repository;

import com.example.demo.user.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    @Query("SELECT u FROM XXX u WHERE u.userName = :userName")
    List<User> getByUserName(@Param("userName") String userName);
}

@Table

若表名与实体类名称不同时,使用 @Table(name="表名"),与@Entity标注并列使用,置于实体类声明语句之前。

有两个@Table,我们应该使用javax.persistence.table。两个@Table如下

  1. javax.persistence.Table
  2. org.hibernate.annotations.Table;
属性含义示例
name表名

@Entity
@Table(name="t_user")

对应的表名是t_user。

catalog

表所属的数据库目录。

通常为数据库名

schema

表所属的数据库模式。

通常为数据库名

uniqueConstraints

设置约束条件。

通常不须设置

@Id

上边是文章的部分内容,为便于维护,全文已转移到此网址:Spring Data JPA-注解大全 - 自学精灵

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT利刃出鞘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值