ssh2学习记录

SSH2框架相关注解

Spring自动装备相关注解:

@Repsoitorty---Dao类自动注入

@Service---业务类自动注入

@Controller---Action自动注入

@AutoWare---自动装配已注入

JPA相关注解

用于领域建模:

@Entity(name="EntityName")

必须

name:可选,对应数据中的一个表

@Tablename="",catalog="",schema=""

可选,通常和@Entity配合使用,只能标注在实体的class定义处,表示实体对应书库表的信息

name:可选,表示表的是名称,默认地,表明和实体名称一直,只有在不一致的情况下才需要指定表名称

catalog:可选,表示catalog名称,默认为Catalog("");

Schema:可选表示schema名称,默认为Schema("");

@id

必须

定义了映射到数据库表的主键的属性,一个实体只能有一个属性被映射为逐渐,至于getXxxx()前。

@GeneratedValuestrategy=GenerationType,generator=""

可选

Staregy:表示主键生成策略,有AUTO,INDENTITY,SEQUENCETABLE四种,分别表示1、让ORM框架自动选择

2、更具数据库的identity字段生成

3、更具数据表的sequence字段生成,以有更具一个额外的表生成主键,默认为Auto

Generator:表示根据逐渐生成器的名称,这个属性通常和ORM框架相关,例如,hibernate可以指定uuid等逐渐生成方式

示例:

@id

@GeneratedValues(strategy=Strategy.SEQUENCE)

public int getPk(){

return pk; 

}

@Basic(fetch=FetchType,optional=true)

可选

@Basic表示一个简单的属性到数据库表的字段映射,对于没有任何标注的getXxxx()方法,默认即为@Basic

Fetch:表示该属性的读取策略,有EAGERLAZY两种,分别表示主支抓取和延迟加载,默认为EAGER

Optional:表示该属性是否允许为null,默认为true

示例:

@Basic(optional=false)

public String getAddress(){

return address;

@Column 可选 

@Column 描述了数据库表中该字段的详细定义 这对于根据 JPA 注解生成数据库表结构的工具非常有作用 

name: 表示数据库表中该字段的名称 默认情形属性名称一致 

nullable: 表示该字段是否允许为 null, 默认为 true 

unique: 表示该字段是否是唯一标识 默认为 false 

length: 表示该字段的大小 仅对 String 类型的字段有效 

insertable: 表示在 ORM 框架执行插入操作时 该字段是否应出现 INSETRT 语句中 默认为 true 

updateable: 表示在 ORM 框架执行更新操作时 该字段是否应该出现在 UPDATE 语句中 默认为 true. 对于一经创建就不可以更改的字段 该属性非常有用 如对于 birthday 字段 

columnDefinition: 表示该字段在数据库中的实际类型 通常 ORM 框架可以根据属性类型自动判断数据库中字段的类型 但是对于 Date 类型仍无法确定数据库中字段类型究竟是 DATE,TIME 还是 TIMESTAMP. 此外 ,String 的默认映射类型为 VARCHAR, 如果要将 String 类型映射到特定数据库的 BLOB 或 TEXT 字段类型 该属性非常有用 

示例 

    @Column(name="BIRTH",nullable="false",columnDefinition="DATE") 

    public String getBithday() { 

       return birthday; 

    } 

@Transient 

可选 

@Transient 表示该属性并非一个到数据库表的字段的映射 ,ORM 框架将忽略该属性 

如果一个属性并非数据库表的字段映射 就务必将其标示为 @Transient, 否则 ,ORM 框架默认其注解为 @Basic 

示例 

    // 根据 birth 计算出 age 属性 

    @Transient 

    public int getAge() { 

       return getYear(new Date()) - getYear(birth); 

    } 

@ManyToOne(fetch=FetchType,cascade=CascadeType ) 可选 

@ManyToOne 表示一个多对一的映射 该注解标注的属性通常是数据库表的外键 

optional: 是否允许该字段为 null, 该属性应该根据数据库表的外键约束来确定 默认为 true 

fetch: 表示抓取策略 默认为 FetchType.EAGER 

cascade: 表示默认的级联操作策略 可以指定为 ALL,PERSIST,MERGE,REFRESH 和 REMOVE 中的若干组合 默认为无级联操作 

targetEntity: 表示该属性关联的实体类型 该属性通常不必指定 ,ORM 框架根据属性类型自动判断 targetEntity. 

示例 

    // 订单 Order 和用户 User 是一个 ManyToOne 的关系 

    // 在 Order 类中定义 

    @ManyToOne() 

    @JoinColumn(name="USER") 

    public User getUser() { 

       return user; 

    }

@JoinColumn 

可选 

@JoinColumn 和 @Column 类似 介量描述的不是一个简单字段 而一一个关联字段 例如 描述一个 @ManyToOne 的字段 

name: 该字段的名称 由于 @JoinColumn 描述的是一个关联字段 如 ManyToOne, 则默认的名称由其关联的实体决定 

例如 实体 Order 有一个 user 属性来关联实体 User, 则 Order 的 user 属性为一个外键 

其默认的名称为实体 User 的名称 下划线 实体 User 的主键名称 

示例 

    见 @ManyToOne 

@OneToMany(fetch=FetchType,cascade=CascadeType) 

可选 

@OneToMany 描述一个一对多的关联 该属性应该为集体类型 在数据库中并没有实际字段 

fetch: 表示抓取策略 默认为 FetchType.LAZY, 因为关联的多个对象通常不必从数据库预先读取到内存 

cascade: 表示级联操作策略 对于 OneToMany 类型的关联非常重要 通常该实体更新或删除时 其关联的实体也应当被更新或删除 

例如 实体 User 和 Order 是 OneToMany 的关系 则实体 User 被删除时 其关联的实体 Order 也应该被全部删除 

示例 

    @OneTyMany(cascade=ALL) 

    public List getOrders() { 

       return orders; 

@OneToOne(fetch=FetchType,cascade=CascadeType) 

可选 

@OneToOne 描述一个一对一的关联 

fetch: 表示抓取策略 默认为 FetchType.LAZY 

cascade: 表示级联操作策略 

示例 

    @OneToOne(fetch=FetchType.LAZY) 

    public Blog getBlog() { 

       return blog; 

    } 

@ManyToMany 

可选 

@ManyToMany 描述一个多对多的关联 多对多关联上是两个一对多关联 但是在 ManyToMany 描述中 中间表是由 ORM 框架自动处理 

targetEntity: 表示多对多关联的另一个实体类的全名 例如 :package.Book.class 

mappedBy: 表示多对多关联的另一个实体类的对应集合属性名称 

示例 

    User 实体表示用户 ,Book 实体表示书籍 为了描述用户收藏的书籍 可以在 User 和 Book 之间建立 ManyToMany 关联 

你可能感兴趣的:(ssh2学习记录)