一、数据库
c1
create table c1(
id int primary key AUTO_INCREMENT,
name varchar(20)
);
c2
create table c2(
cid int primary key AUTO_INCREMENT,
cname varchar(20),
id int
);
二、实体类
C1.java
private Integer id;
private String name;
private C2 c2;
private Set<C2> setC2 = new HashSet<C2>();
C2.java
private Integer id;
private Integer cid;
private String cname;
private C1 c1;
封装即可
<!-- 当前实体是否包含另外一个实体的对象 - 单向/双向 -->
三、实体HBM
C1.hbm.xml
<hibernate-mapping>
<class name="cn.kaxlm6.pet.entity.C1" table="C1">
<id name="id" type="java.lang.Integer">
<column name="ID" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
<!--
set:name = set集合变量名,table = 多端对象表名 ,cascade = 级联 ,inverse = 关系维护
key:column = 多端对象列名
one-to-many:class = 多端对象类路径
-->
<set name="setC2" table="C2" cascade="all-delete-orphan" inverse="true" >
<key column="id"/>
<one-to-many class="cn.kaxlm6.pet.entity.C2"/>
</set>
</class>
</hibernate-mapping>
C2.hbm.xml
<hibernate-mapping>
<class name="cn.kaxlm6.pet.entity.C2" table="C2">
<id name="cid" type="java.lang.Integer">
<column name="CID" />
<generator class="native"></generator>
</id>
<property name="cname" type="java.lang.String">
<column name="CNAME" />
</property>
<!--
many-to-one:name = 一端对象名 ,class = 一端对象类路径 , column = 一端对象id
-->
<many-to-one name="c1" class="cn.kaxlm6.pet.entity.C1" column="id" ></many-to-one>
</class>
</hibernate-mapping>
四、操作
添加
//添加
C1 c1 = new C1();
c1.setName("湖南");
C2 c2 = new C2();
c2.setCname("长沙");
C2 c3 = new C2();
c3.setCname("衡阳");
C2 c4 = new C2();
c4.setCname("邵阳");
//互设
c2.setC1(c1);
c3.setC1(c1);
c4.setC1(c1);
c1.getSetC2().add(c2);
c1.getSetC2().add(c3);
c1.getSetC2().add(c4);
//保存
session.save(c1);
删除
C1 c1 = session.get(C1.class, 5);
session.delete(c1);