Hibernate - 一对多笔记

一、数据库

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值