基本属性映射
这块主要是根据网上的一些课程 自己记录的一些随便
这块课程主要是 使用springboot 然后数据库操作使用spring-data-jpa 框架是前后端分离 这个课程主要讲后端,还是用springsecurty等
jpa是一种orm的规范,根据网上的定义
JPA全称Java Persistence API,是一组用于将数据存入数据库的类和方法的集合。JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
首先建立一个类
如图
类中的@Entity注解意思是:说明这个class是一个实体类,并使用默认的orm规则,即class的名称对应的表明,class名就是字段名。
类中@Id表明:说明一个实体类的属性映射为数据库的主键列。
@Id也可以至于get方法之上。
@Lombok是一个插件是lombok,省略了setget方法。
@GneratedValue:
@GeneratedValue用于标注注解的生成策略,通过strategy属性来指定注解是哪种生成策略(这里用了@AUTO 其实正常来说正式环境 是没有这样 auto一般会使用雪花算法 来生成注解策略)
在java.persistence.GenerationType中定义了以下几种策略
-IDENTITY:采用id自增长方式来自增主键字段,Oracle 不支持这种方式
-AUTO:jpa自动选择合适的策略
–SEQUENCE:通过序列产生主键,通过@SequenceGenerator 注解指定序列名,MySql不支持这种方式
–TABLE:通过表产生主键,框架借由表模拟序列产生主键,使用该策略可以使应用更易于数据库移植。
运行springboot这个项目,同时观察数据库,在这之前记得要在application.properties进行如下操作:
这个时候运行 application主函数,这个时候观察数据库 ,看到已经生成表
这个时候 可以看到数据库表名和字段名都是跟Category这个类一样,但是这个时候 我想在表或者字段上加上前缀,这个时候可以使用@table,如图:
因为在application配置的策略是update 所有 这个时候 会新生成一张表 ,如果我想在在字段上 加前缀 可以使用@Column注解
@Entity @Data @Table(name = "rc_category") public class Category { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @Column(name = "rc_name") private String name; }
再次运行application,就会生成跟@Column对面的字段
但是有一些的时候一些字段不需要存到数据库中,我们可以使用@Transient这个注解
@Entity @Data @Table(name = "rc_category") public class Category { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @Column(name = "rc_name") private String name; @Transient private String xxxx; }
运行application之后,如下图
说明@Transient已经起作用