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

网友投稿 1266 2022-09-03


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

目录@Entity和@Table注解的用法@Entity注解@Table注解@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注解表示在生http://成数据库中的表时,该属性被忽略,即不生成对应的字段

@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中表的字段名的映射规则


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:http接口测试方法分享,怎么使用Jmeter进行http接口测试?
下一篇:如何在python同一应用下的多模块中共享变量(python多模块之间调用)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~