今天的思路是由@Transient作为导火索;
1.@Transient是干啥的?又有什么作用?
首先这个注解是在与数据库表存在映射关系的实体类中看到的,大概意思是此注解下的字段(属性)不参与与数据库表的映射关系,即在生成数据库中对应的表时,该字段是被忽略的不生成相应的数据库字段;也可以理解为在实体类进行序列化时不参与序列化。
2.@Entity/@Table
@Transient是在含有@Entity、@Table注解的实体类中用到,那这两个注解的意义和作用是什么呢?
Java Persistence API中定义,可以将实例类与数据库表进行映射,这种实体类也就是“Entity Bean”。
@Entity
- 此注解表示该类是个实体类,此实体类会映射数据库中的一张表,默认表名和实体类名相同;
- @Entity的属性name,顾名思义,表的名字,可以通过起别名的方式将实体类名和表名区分(大多数不使用name属性,而使用@Table(name="table_name"));
- 与数据库库表相同,既然为映射关系,那么此实体类同时需要主键字段,注解@Id就是用在这个字段上与数据库的主键属性进行映射,同时也需要注解@GeneratedValue为此生成主键策略(strategy共有四个值,后续单独解释意义及用法);
@Table
默认只会完成数据库表和实体之间的映射,即通过属性name的值来指定数据库库表和实体的关联