原文网址: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如下
- javax.persistence.Table
- org.hibernate.annotations.Table;
属性 | 含义 | 示例 |
name | 表名 | @Entity 对应的表名是t_user。 |
catalog | 表所属的数据库目录。 通常为数据库名 | |
schema | 表所属的数据库模式。 通常为数据库名 | |
uniqueConstraints | 设置约束条件。 通常不须设置 |
@Id
上边是文章的部分内容,为便于维护,全文已转移到此网址:Spring Data JPA-注解大全 - 自学精灵