您的位置:首页 > 其它

Hibernate annotation 使用简介

2008-07-09 14:26 141 查看
Java代码

@Entity --声明为一个实体bean

@Table(name="promotion_info") --为实体bean映射指定表(表名="promotion_info)

@Id --声明了该实体bean的标识属性

@GeneratedValue --可以定义标识字段的生成策略.

@Transient --将忽略这些字段和属性,不用持久化到数据库

@Column(name="promotion_remark")--声明列(字段名="promotion_total") 属性还包括(length=200等)

@Temporal(TemporalType.TIMESTAMP)--声明时间格式

@Enumerated --声明枚举

@Version --声明添加对乐观锁定的支持

@OneToOne --可以建立实体bean之间的一对一的关联

@OneToMany --可以建立实体bean之间的一对多的关联

@ManyToOne --可以建立实体bean之间的多对一的关联

@ManyToMany --可以建立实体bean之间的多对多的关联

@Entity							--声明为一个实体bean @Table(name="promotion_info")	--为实体bean映射指定表(表名="promotion_info) @Id								--声明了该实体bean的标识属性 @GeneratedValue					--可以定义标识字段的生成策略. @Transient						--将忽略这些字段和属性,不用持久化到数据库 @Column(name="promotion_remark")--声明列(字段名="promotion_total") 属性还包括(length=200等) @Temporal(TemporalType.TIMESTAMP)--声明时间格式 @Enumerated						--声明枚举 @Version						--声明添加对乐观锁定的支持 @OneToOne						--可以建立实体bean之间的一对一的关联 @OneToMany						--可以建立实体bean之间的一对多的关联 @ManyToOne						--可以建立实体bean之间的多对一的关联 @ManyToMany						--可以建立实体bean之间的多对多的关联


以上是基本常用注解,下面是例子说明

Java代码

@Entity

@Table(name="promotion_info")

public class Promotion implements Serializable {

//AUTO--可以是identity类型的字段,或者sequence类型或者table类型,取决于不同的底层数据库

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

private Long id;

@Column(name="group_start_amount")

private Integer groupStartAmount=0;

@Column(name="promotion_remark",length=200)

//@Lob 如果是文章内容可以使用 只需要把length=200去掉就可以了

private String remark;

//DATE - java.sql.Date

//TIME - java.sql.Time

//TIMESTAMP - java.sql.Timestamp

@Temporal(TemporalType.TIMESTAMP)

@Column(name="start_time")

private Date startTime;

//显示0 隐藏1

public static enum DisplayType {

显示,隐藏

}

@Enumerated(value = EnumType.ORDINAL)//ORDINAL序数

private DisplayType displayType = DisplayType.显示;

@Version

private Integer version;

//CascadeType.PERSIST -- 触发级联创建(create)

//CascadeType.MERGE -- 触发级联合并(update)

//FetchType.LAZY -- 延迟加载

@ManyToOne(cascade = {CascadeType.PERSIST,CascadeType.MERGE},fetch = FetchType.LAZY)

private PromotionGroup promotionGroup;

//单向ManyToMany

//@JoinTable(关联的表名)

//joinColumns -- promotion关联的列的外键

//inverseJoinColumns -- largess 关联列的外键

@ManyToMany(cascade = {CascadeType.PERSIST,CascadeType.MERGE})

@JoinTable(name="promotion_largess",joinColumns={@JoinColumn(name="promotion_id")},inverseJoinColumns={@JoinColumn(name="largess_id")})

private Set<Largess> largess;

//get set 省略....

}

@Entity

@Table(name="promotion_group")

public class PromotionGroup implements Serializable {

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

private Long id;

//mappedBy的值"promotionGroup"指向owner(Promotion)端的关联属性,并且是双向关系

@OneToMany(mappedBy="promotionGroup",cascade=CascadeType.ALL)

private List<Promotion> promotion;

//get set 省略....

}

@Entity

@Table(name="largess")

public class Largess implements Serializable {

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

private Long id;

@Transient

private String img

//get set 省略....

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: