hibernate注解的方式实现映射

  • 表的映射
//代表此类参与ORM映射,此注解必须要有
@Entity  
//代表user这个类映射了一个表xx_user,如果表名和类名一样,此注解可以省略
@Table(name="xx_user")
public class User {

   //主键,此注解必须要有
    @Id  
    //数据库表中主键列名为id,如果实体类属性名和列名相同,此注解可以省略
    @Column(name="id")  
    //主键的维护策略
    @GenericGenerator(name="xxx_id",strategy="increment")   
    @GeneratedValue(generator="xxx_id")
    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"对方中映射着外键的关系属性==Address表中有一个关系属性,名字是xxx_person"
    @OneToOne(mappedBy="xxx_person")
    //ALL:增删改都可以级联(cascade)
    //save-update:增加和更新可以级联
    //delete:删除可以级联
    //如果不设置,则增删改都不可以级联
    //注意:查询例外,不受级联权限的控制,默认级联。
    @Cascade(value=CascadeType.ALL)
    private Address address;

 address实体类

    //关系属性
    @OneToOne
    //JoinColumn:代表是从表,name的值代表:Address表中外键名为person_id
    @JoinColumn(name="person_id")
    //@Cascade
    private Person person;
  • 一对多映射

user实体类

    @OneToMany(mappedBy="user")
    //ALL:增删改都可以级联(cascade)
    //save-update:增加和更新可以级联
    //delete:删除可以级联
    //如果不设置,则增删改都不可以级联
    //注意:查询例外,不受级联权限的控制,默认级联。
    @Cascade(value=CascadeType.DELETE)
    private Set<Order> orders=new HashSet<Order>();

order实体

    //关系属性
    @ManyToOne
    //JoinColumn:name代表关系属性映射的列
    @JoinColumn(name="user_id")
    private User user;
  •  多对多关系

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>();

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值