Hibernate一对多映射

一对多使用区县和街道举例:

街道的实体
private Integer JDId;  //街道的id
private String JDName; //街道名
private QuXian quXian; //属于哪个区县
区县的实体
private Integer QXId; //区县的id
private String QXName; //区县的名字
private Set<JieDao> jieDaoSet = new HashSet<>(); //区县里面的街道

都需要生成相应的get set方法

hibernate.cfg.xml配置
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!--<property name="hibernate.bytecode.use_reflection_optimizer">false</property>-->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.password">admin</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3308/hibernate-train</property>
        <property name="hibernate.connection.username">XXXX</property>
        <!--数据库方言,用于指定使用的sql从属于哪个数据库-->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <!--为true时显示SQL语句-->
        <property name="show_sql">true</property>
         <property name="hibernate.hbm2ddl.auto">update</property>  <!-- 开启自动建表 -->
        <mapping resource="quxian.hbm.xml"></mapping>
        <mapping resource="jiedao.hbm.xml"></mapping>
    </session-factory>
</hibernate-configuration>

区县的hmb.xml配置

<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
        
        <hibernate-mapping>
            <class name="entity.QuXian" table="quxian">
                <id name="QXId" column="qx_id" type="integer" unsaved-value="null">
                    <generator class="assigned"/>
                </id>
                <property name="QXName" column="qx_name" type="string"/>
                <!--inverse反转,把控制权有一方转给多方,多方在关联字段增加时自动添加-->
                <set name="jieDaoSet" cascade="save-update" inverse="true">
                    <key column="qx_id"/>
                    <one-to-many class="entity.JieDao"/>
                </set>
            </class>
        </hibernate-mapping>

街道的.hmb.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="entity.JieDao" table="jiedao">
        <id name="JDId" column="jd_id" type="integer">
            <generator class="assigned"/>
        </id>
        <property name="JDName" column="jd_name" type="string"/>
        <many-to-one name="quXian" class="entity.QuXian" column="qx_id"/>
    </class>
</hibernate-mapping>

开启自动建表后,建立完实体就直接可以开始测试了

在这里插入图片描述
注意inverse=“true” 和"false"的区别
在这里插入图片描述
inverse="true"与inverse="false"的区别
如果配置不当,会影响性能的使用
区别在于保存数据的时候
当设置为“true”时:会直接保存不会修改 -----性能好
当设置为“false”时:会保存后修改 ------性能差

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值