关于@Entity和@Table注解的用法详解

 更新时间:2022年01月15日 11:16:36   作者:光阴不负卿  
这篇文章主要介绍了关于@Entity和@Table注解的用法详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

@Entity和@Table注解的用法

@Entity注解

@Entity注解和@Table注解都是Java Persistence API中定义的一种注解。

@Entity说明这个class是实体类,并且使用默认的orm规则,即class名就是数据库表中表明,class字段名即表中字段名。@Entity注解指明这是一个实体Bean。

import lombok.Data; 
import javax.persistence.*; 
@Data
@Entity(name = "t_book")
public class Book {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    @Column(name = "book_name")
    private String name;
    @Column(name = "book_author")
    private String author;
    private Float price;
    @Transient
    private String description;
}
  • @Entity注解表示该类是要给实体类,在羡慕启动时会根据该类自动生成一张表,表的名称即@Entity注解中name的值,如果不配置name,默认表明为类名
  • 所有的实体类都要有主键,@Id注解表示该属性是一个主键,@GeneratedValue注解表示注解自动生成,strategy则表示主键的生成策略
  • 默认情况下,生成的表中字段的名称就是实体类中属性的名称,通过@Column注解可以定制生成的字段属性,name表示该属性对应的数据表中字段的名称,nullable表示该字段非空
  • @Transient注解表示在生成数据库中的表时,该属性被忽略,即不生成对应的字段 

@Table注解

@Table注解默认情况下只会完成表和实体之间的映射,声明才对象映射到数据库的数据表,通过它可以为实体指定表(table)

@Data
@Table(name="book")
public class Book{
    @Id
    private Integer id;
    @Column(name="book_name")
    private String name;
    ...
}
  • 常用属性:name  指定表
  • @Table(name = "book")

@Table注解是一个非必须的注解,@Table注解指定了Entity所要映射的数据库表,其中@Table.name()用来指定映射表的表名。

如果同时使用了@Entity(name="student")和@Table(name="book"),最终对应的表名是book,这说明优先级:@Table>@Entity

@Entity和@Table的区别

Java Persistence API定义了一种定义,可以将常规的普通Java对象(有时被称作POJO)映射到数据库。这些普通Java对象被称作Entity Bean。除了是用Java Persistence元数据将其映射到数据库外,Entity Bean与其他Java类没有任何区别。

事实上,创建一个Entity Bean对象相当于新建一条记录,删除一个Entity Bean会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将Entity Bean的状态和数据库同步。

@Entity和@Table的区别:

@Entity说明这个class是实体类,并且使用默认的orm规则,即class名即数据库表中表名,class字段名即表中的字段名

如果想改变这种默认的orm规则,就要使用@Table来改变class名与数据库中表名的映射规则,@Column来改变class中字段名与db中表的字段名的映射规则

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 利用Maven添加工程版本信息及时间戳

    利用Maven添加工程版本信息及时间戳

    这篇文章主要介绍了利用Maven添加工程版本信息及时间戳方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java设计模式之建造者模式浅析示例

    Java设计模式之建造者模式浅析示例

    建造者模式,是一种对象构建模式 它可以将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构造出不同表现的对象。本文将通过示例讲解建造者模式,需要的可以参考一下
    2022-11-11
  • 详解Spring batch 入门学习教程(附源码)

    详解Spring batch 入门学习教程(附源码)

    本篇文章主要介绍了Spring batch 入门学习教程(附源码),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • 有关ThreadLocal的面试题你真的懂了吗

    有关ThreadLocal的面试题你真的懂了吗

    这篇文章主要介绍了面试题ThreadLocal,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-06-06
  • 一篇文章带你认识Java8接口的默认方法

    一篇文章带你认识Java8接口的默认方法

    这篇文章主要给大家介绍了如何通过一篇文章带你认识Java8接口的默认方法的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Java8具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • Java中scheduleAtFixedRate的用法

    Java中scheduleAtFixedRate的用法

    如何正确使用Java中的scheduleAtFixedRate是一篇介绍Java中定时任务调度器的文章。它详细介绍了scheduleAtFixedRate方法的用法、参数及作用,并给出了一些实例以帮助读者更好地理解其使用。本文为Java开发人员提供了一些实用的技巧,帮助他们更好地管理和控制定时任务
    2023-04-04
  • Java实现简单登陆界面

    Java实现简单登陆界面

    这篇文章主要为大家详细介绍了Java实现简单登陆界面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Maven及Springboot配置JDK版本,编码,源码打包等方式

    Maven及Springboot配置JDK版本,编码,源码打包等方式

    这篇文章主要介绍了Maven及Springboot配置JDK版本,编码,源码打包等方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • MyBatis-Plus中MetaObjectHandler没生效完美解决

    MyBatis-Plus中MetaObjectHandler没生效完美解决

    在进行测试时发现配置的MyMetaObjectHandler并没有生效,本文主要介绍了MyBatis-Plus中MetaObjectHandler没生效完美解决,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • Java基于MySQL实现学生管理系统

    Java基于MySQL实现学生管理系统

    这篇文章主要为大家详细介绍了Java基于MySQL实现学生管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01

最新评论