Hibernate映射文件的编写以及一对多关联关系的笔记

Hibernate映射文件的配置

Hibernate有两种方式配置持久化类:1、通过hbm.xml映射文件配置 2、通过注解配置

hibernate.cfg.xml配置文件中hbm.xml文件的映射地址是用resource

举例:<mapping resource=”.../User.hbm.xml”/>

持久化类的映射地址是用class

举例:<mapping class=”xxx.User”/>

注意:resource的地址是由”/”分隔,class的地址是由”.”分隔

通过hbm.xml配置映射文件

<hibernate-mapping>

<class name=”xxx.User”  table=”USER”> //映射类在项目中的位置,命名表名

<id name=”id” type=”integer”> //持久化类的属性名

<column name=”ID” precision=”22” scale=”0”/> //数据库里的字段名

<generator class=”sequence”/> //主键生成策略 这里是按照序列

</id>

<property name=”name” type=”string”>

<column name=”NAME” length=”20”/>

</property>

</class>

</hibernate-mapping>

通过注解配置映射文件

@Entity //告诉hibernate这是个映射持久化类

@Table(name=”User”) //表名

public class User{

private int id;

private String name;

 

@Id //设置主键

@Column(name=”ID”) //设置列名

//主键生成策略

@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="gt") //使用自定义的序列

@SequenceGenerator(sequenceName="seq_1",name="gt")

public int getId(){

return id;

}

public void setId(){

This id = id;

}

@Column //如果不单独命名,生成的列名则为持久化类里所对应的属性名

public String getName(){

return name;

}

public void setName(){

This.name = name;

}

}

关联关系映射(一对多)

一对多的关联关系是指一的一方的主键对应到多的一方的外键。

举例: 一:student 多:classes

 

@Entity

@Table(name=”STUDENT”)

public class Student{

private int id;

private String name;

private Classes classes;

 

@Id

@column

@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="gt")

@SequenceGenerator(sequenceName="seq_1",name="gt")

getId()

setId()

@Column

getName()

setName()

 

@ManyToOne(fetch=FetchType.LAZY) //指定多对一的关系 fetch设置抓取方式为延迟加载

@JoinColumn(name=”CLASSESID”) //外键列名为CLASSESID,一个学生对应一个班级

getClasses()

setClasses()

}

 

 

 

 

 

@Entity

@Table(name=”CLASSES”)

public class Classes{

private int id;

private String name;

private Set<Student> students = new HashSet<Student>(0);

 

@Id

@....

getId..

setId

..

//cascade设置级联的范围,这里设置为ALL意思是对于classes的所有操作都会影响到student

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy="classes") //mappedBy设置由哪一方来进行维护 这里设置一的一方来维护两个表的关系

getStudents()

setStudents()

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值