Hibernate 实体类注解
Hibernate注解
1。@Entity(name="EntityName")
必须,name为可选,对应数据库中一的个表
2、@Table(name="",catalog="",schema="")
可选,通常和@Entity配合使用,只能标注在实体的class定义处,表示实体对应的数据库表的信息
name:可选,表示表的名称.默认地,表名和实体名称一致,只有在不一致的情况下才需要指定表名
catalog:可选,表示Catalog名称,默认为Catalog("").
schema:可选,表示Schema名称,默认为Schema("").
3、@id
必须
@id定义了映射到数据库表的主键的属性,一个实体只能有一个属性被映射为主键.置于getXxxx
()前.
4、@GeneratedValue(strategy=GenerationType,generator="")
可选
strategy:表示主键生成策略,有AUTO,INDENTITY,SEQUENCE 和 TABLE 4种,分别表示让ORM
框架自动选择,
根据数据库的Identity字段生成,根据数据库表的Sequence字段生成,以有根据一个额外的表生
成主键,默认为AUTO
generator:表示主键生成器的名称,这个属性通常和ORM框架相关,例如,Hibernate可以指定
uuid等主键生成方式.
示例:
@Id @GeneratedValues(strategy=StrategyType.SEQUENCE) public int getPk() { return pk; } @Basic(optional=false) public String getAddress() { return address; } @Column(name="BIRTH",nullable="false",columnDefinition="DATE") public String getBithday() { return birthday; } //根据birth计算出age属性 @Transient public int getAge() { return getYear(new Date()) -getYear(birth); } //订单Order和用户User是一个ManyToOne的关系 //在Order类中定义 @ManyToOne() @JoinColumn(name="USER") public User getUser() { return user; } @OneTyMany(cascade=ALL) public List getOrders() { return orders; } @OneToOne(fetch=FetchType.LAZY) public Blog getBlog() { return blog; } @Entity public class User { private List books; @ManyToMany(targetEntity=package.Book.class) public List getBooks() { return books; } public void setBooks(List books) { this.books=books; } } @Entity public class Book { private List users; @ManyToMany(targetEntity=package.Users.class,mappedBy="books") public List getUsers() { return users; } public void setUsers(List users) { this.users=users; } } @MappedSuperclass public class Employee() { .... } @Entity public class Engineer extendsEmployee { ..... } @Entity public class Manager extends Employee{ ..... } @Embeddable public class Address{city,street,zip} @Entity public class User { @Embedded public Address getAddress() { .......... } }