注解整理笔记@是java中的注解。
JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
1@SuppressWarnings("serial") 实体类注解例子2@Entity3@Table(name = "T_BASE_ROLE")5@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE,region = CacheConstants.HIBERNATE_CACHE_BASE)//jackson标记不生成json对象的属性4@JsonIgnoreProperties (value = { "hibernateLazyInitializer" ,"handler","fieldHandler" ,"resources","users"})public class Role extends BaseEntity implements Serializable {6@Id7@GeneratedV alue(strategy = GenerationType.AUTO)8@Column(name = "ID")public Long getId() {return id;}@Excel(exportName="记录创建者", exportFieldWidth = 30)protected String createUser;9@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")@Column(name = "CREATE_TIME", updatable = false)10@Temporal(TemporalType.TIMESTAMP)public Date getCreateTime() {return createTime;}11@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE},fetch = ZY) 12@JoinTable(name = "T_BASE_ROLE_RESOURCE",joinColumns = { @JoinColumn(name = "ROLE_ID") },inverseJoinColumns = { @JoinColumn(name = "RESOURCE_ID") }) 13@OrderBy("id")public List<Resource> getResources() {return resources;}14@Transient@SuppressWarnings("unchecked")public List<Long> getResourceIds() {if (!Collections3.isEmpty(resources)) {resourceIds = ConvertUtils.convertElementPropertyToList(resources, "id");}return resourceIds;}实体类注解详解1、@SuppressWarnings("serial") 可选ng.SuppressWarnings是J2SE 5.0中标准的Annotation之一,可以标注在类、字段、方法、参数、构造方法,以及局部变量上,其作用为告诉编译器忽略指定的警告,不用在编译完成后出现警告信息。
●@SuppressWarnings("unchecked")告诉编译器忽略unchecked 警告信息,如使用List,ArrayList等未进行参数化产生的警告信息。
●@SuppressWarnings("serial")如果编译器出现这样的警告信息:The serializable class WmailCalendar does not declare a static final serialVersionUID field of type long使用这个注释将警告信息去掉。
●@SuppressWarnings("deprecation")如果使用了使用@Deprecated注释的方法,编译器将出现警告信息。
使用这个注释将警告信息去掉。
●@SuppressWarnings("unchecked", "deprecation")告诉编译器同时忽略unchecked和deprecation的警告信息。
●@SuppressWarnings(value={"unchecked", "deprecation"})等同于@SuppressWarnings("unchecked", "deprecation")2、@Entity(name="TableName") 必选表示标注该类为实体类。
●name:可选,对应数据库中一的个表。
3、@Table(name="",catalog="",schema="") 可选表示其对应数据库表信息,通常和@Entity配合使用,只能在实体的class定义处。
●name:可选,表示表名称,默认表名和实体名称一致,只有在不一致时才需指定表名;●catalog:可选,表示Catalog名称,默认为Catalog("");●schema:可选,表示Schema名称,默认为Schema("")。
4、@JsonIgnoreProperties (value = { "hibernateLazyInitializer" ,"handler","fieldHandler" ,"resources","users"})此注解为类注解,是jackson在实际应用提供的注解,作用是json序列化时将java bean 中的一些属性忽略掉,序列化和反序列化都受影响。
忽略value后的数组中包含的属性的json转化,主要是防止一些Json转换异常错误。
5、@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE,region = "com.eryansky.entity.base") 可选这个jpa表示hibernate的二级缓存。
Hibernate的缓存分为:一级缓存:Hibernate的一级缓存是Session所内置的,不能被卸载,也不能进行任何配置,在Session关闭的时候,一级缓存就失效了。
二级缓存:在SessionFactory级别的,它可以使用不同的缓存实现,如EhCache 、JBossCache、OsCache等。
●usage:可选,表示缓存的方式;缓存的方式有四种,分别为:CacheConcurrencyStrategy.NONECacheConcurrencyStrategy.READ_ONL Y只读模式,在此模式下,如果对数据进行更新操作,会有异常;CacheConcurrencyStrategy.READ_WRITE读写模式在更新缓存的时候会把缓存里面的数据换成一个锁,其它事务如果去取相应的缓存数据,发现被锁了,直接就去数据库查询;CacheConcurrencyStrategy.NONSTRICT_READ_WRITE不严格的读写模式则不会的缓存数据加锁;CacheConcurrencyStrategy.TRANSACTIONAL事务模式指缓存支持事务,当事务回滚时,缓存也能回滚,只支持JTA环境。
●region:可选,表示缓存的区域范围(详情链接:/cuker919/article/details/5966862)例子:@SuppressWarnings("serial")@Entity@Table(name = "t_team")@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE,region = "com.eryansky.entity.base")@JsonIgnoreProperties (value = { "hibernateLazyInitializer" ,"handler","fieldHandler" ,"resources","users"})public class Team implements Serializable {.........}6、@id 必选定义映射到数据库表主键属性,一个实体只能有一个属性被映射为主键,置于getId()前。
7、@GeneratedValue(strategy=GenerationType,generator="") 可选常与@id一起使用表示主键自增。
Strategy:表示主键生成策略,有AUTO,INDENTITY,SEQUENCE 和TABLE 4种,分别表示让ORM框架自动选择,根据数据库的Identity字段生成,根据数据库表的Sequence字段生成,以有根据一个额外的表生成主键,默认为AUTO。
Generator:表示主键生成器的名称,这个属性通常和ORM框架相关,例如,Hibernate可以指定uuid等主键生成方式.8、@Column(name = "NAME",length = 100,nullable = false,unique = true) 可选描述了数据库表中该字段的详细定义,这对于根据JPA注解生成数据库表结构的工具非常有作用。