ssh2学习记录

SSH2框架相关注解数据库

Spring自动装备相关注解:app

@Repsoitorty---Dao类自动注入框架

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

@Controller---Action自动注入工具

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

JPA相关注解ui

用于领域建模:spa

@Entity(name="EntityName")hibernate

必须对象

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

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

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

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

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

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

@id

必须

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

@GeneratedValuestrategy=GenerationType,generator=""

可选

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

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

三、更具数据表的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 关联 

相关文章
相关标签/搜索