首页 > 代码库 > hibernate通过注解实现实体和表的映射
hibernate通过注解实现实体和表的映射
参考:
表名的映射:
//代表此类参与ORM映射,此注解必须要有
@Entity
//代表user这个类映射了一个表user50,如果表名和类名一样,此注解可以省略
@Table(name="user50")
public class User {
主键的映射:
//主键,此注解必须要有
@Id
//数据库表中主键列名为id,如果实体类属性名和列名相同,此注解可以省略
@Column(name="id")
//主键的维护策略
@GenericGenerator(name="inc50",strategy="increment")
@GeneratedValue(generator="inc50")
private Integer userID;
属性映射成表的字段:
//@Column(name="name")//此属性要映射到名为name的列上,若属性名和列名相同,则注解可以省略 private String name;
日期类型的映射:
@Column(name="birth") //如果属性是日期格式,可以设置日期的保存规格 //time:只保存时间 date:只保存日期 timestamp:(默认)日期+时间 @Temporal(TemporalType.DATE) private Date birthday;
表之间的关系是一对一的映射:
Person实体中:
//关系属性:告知Passport它的关系属性 //mappedBy"对方中映射着外键的关系属性==Passport表中有一个关系属性,名字是person50" @OneToOne(mappedBy="person50") //ALL:增删改都可以级联(cascade) //save-update:增加和更新可以级联 //delete:删除可以级联 //如果不设置,则增删改都不可以级联 //注意:查询例外,不受级联权限的控制,默认级联。 @Cascade(value=http://www.mamicode.com/CascadeType.ALL) private Passport passport50;
Passport实体中:
//关系属性 @OneToOne //JoinColumn:代表是从表,name的值代表:Passport表中外键名为person_id @JoinColumn(name="person_id") //@Cascade private Person person50;
表之间的关系是一对多的映射:
user表 1: n order表
user实体:
@OneToMany(mappedBy="user") //ALL:增删改都可以级联(cascade) //save-update:增加和更新可以级联 //delete:删除可以级联 //如果不设置,则增删改都不可以级联 //注意:查询例外,不受级联权限的控制,默认级联。 @Cascade(value=http://www.mamicode.com/CascadeType.DELETE) private Set<Order> orders=new HashSet<Order>();
order实体:
//关系属性 @ManyToOne //JoinColumn:name代表关系属性映射的列 @JoinColumn(name="user_id") private User user;
表之间的关系是多对多的映射:
Student n:n Course 关系表: r_c_s
Student实体:
//关系属性
//EAGER: 查询时关联的数据也同时取出放入内存中,因为在内存里,所以在session外也可以取 @ManyToMany(fetch=FetchType.EAGER) //中间表,两个外键: joinColumns=指向自己的外键 inverseJoinColumns=指向对方的外键 @JoinTable(name="r_c_s" ,joinColumns={@JoinColumn(name="stu_id")} ,inverseJoinColumns={@JoinColumn(name="cour_id")}) @Cascade(value=CascadeType.ALL) private Set<Course> courses=new HashSet<Course>();
Course实体:
//关系属性 @ManyToMany @JoinTable(name="r_c_s" ,joinColumns={@JoinColumn(name="cour_id")} ,inverseJoinColumns={@JoinColumn(name="stu_id")}) @Cascade(value=CascadeType.ALL) private Set<Student> students=new HashSet<Student>();
hibernate通过注解实现实体和表的映射
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。