Java Jpa 表的创建 和 建表时使用的一些注解的简单介绍

本文探讨了JPA中@GeneratedValue与@GenericGenerator的区别,展示了如何使用@JsonIgnore忽略属性序列化,以及@Transient处理非持久化字段。还介绍了@Enumerated用于数据库交互的两种方式。实例代码详解了Person实体类的实现。

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

1、GeneratedValue与GenericGenerator的区别

              @GeneratorValue注解----JPA通用策略生成器

              @GenericGenerator注解----自定义主键生成策略

 2、@JsonIgnore简单介绍

             使用方法:一般标记在属性或者方法上,返回的json数据即不包含该属性。

3、@Transient简单介绍

            一旦变量被transient修饰,变量将不再是对象持久化的一部分,不会在存入数据库

4、@Enumerated简单介绍

          @Enumerated(value = EnumType.ORDINAL)  采用枚举类型的序号值与数据库进行交互

        @Enumerated(value=EnumType.STRING)   采用枚举类型与数据库进行交互

@Entity
@Data
public class Person {
    @Id
    @GeneratedValue(generator = "paymentableGenerator")
    @GenericGenerator(name = "paymentableGenerator", strategy = SnowflakeIdGenerator.TYPE)
    private String id;

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

    // @Convert(converter = SexConverter.class)
    @Enumerated(value = EnumType.ORDINAL)
    private SexEnum sex;

    /**
     * 创建时间
     */
    //  @JsonIgnore
    @Transient
    @CreationTimestamp
    @Column(updatable = false)
    private LocalDateTime createAt;
    /**
     * 最后更新时间
     */
    @JsonIgnore
    @UpdateTimestamp
    private LocalDateTime updateAt;

    @ElementCollection
    Map<String,String > tag;
}

雪花Id生产器

public class SnowflakeIdGenerator implements IdentifierGenerator {
    //当前类的路径
    public final static String TYPE = "com.example.springbootadminclient.jpahiberate_test.SnowflakeIdGenerator";

    final static Snowflake SNOWFLAKE = IdUtil.getSnowflake();

    @Override
    public Serializable generate(SharedSessionContractImplementor implementor, Object o) throws HibernateException {
        return SNOWFLAKE.nextIdStr();
    }
}

自己记录的一些笔记,内容如有不对请指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

wangjingyang2020

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

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

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

打赏作者

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

抵扣说明:

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

余额充值