hiernate 级联关系

本文深入解析了一对一、一对多及多对多的关系对象映射(ORM)配置方法,包括主控方与约束方的概念、级联操作设置、控制反转等关键技术点。

一对一:
     主控方:(Channel)
                   <one-to-one  name="channelCount" class="ChannelCount" cascade="all"(级联关系)>
                   </one-to-one>
     约束方:(ChannelCount)
                   <id name="id" type="java.lang.Integer" column="channel_id">
                            <generator class="foreign"></generator>
                    </id>
                   <one-to-one  name="channel" class="Channel" constrained="true"(约束)>
                   </one-to-one>

双向一对多:user (一) 表   address(多)
               user:   <set name="address" inverse="true" cascade="all"   table="address">
                                        <key column="user_id"></key>
                                        <one-to-many class="Address"/>
                              </set>
inverse:控制反转,由address控制;

cascade:级联操作,只要user有改变或删除address也会改变删除

                address:<many-to-one   name="user" class="User" cascade="none" column="user_id" >
                                 </many-to-one>

多对多:(需要中间表)  role(角色)   group(分组)  group_role(中间表)
                role:<set name="groups" table="group_role" lazy="false"  cascade="save-update">
                                  <key column="role_id"></key>
                                  <many-to-many class="Group" column="group_id">
                                  </many-to-many>
                           </set>
                group:<set name="roles" table="group_role" lazy="false"  cascade="save-update">
                                  <key column="group_id"></key>
                                  <many-to-many class="Role" column="role_id">
                                  </many-to-many>
                           </set>


                        

### 下载Hibernate配置文件或示例 对于获取Hibernate及其配置文件,通常可以通过官方渠道或其他可靠的资源来获得。当提到通过Maven项目基础设施创建并集成Hibernate时,在添加JBoss仓库之后可以方便地管理依赖项[^2]。 为了具体展示如何下载或构建一个基本的Hibernate配置文件`hibernate.cfg.xml`以及映射文件`.hbm.xml`,下面提供了一个基于MySQL数据库的例子: #### 创建 `hibernate.cfg.xml` 此文件位于项目的`src/main/resources`目录下,用于定义连接到特定数据库所需的参数以及其他全局设置。 ```xml <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC</property> <property name="connection.username">root</property> <property name="connection.password"></property> <!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">1</property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property> <!-- Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property> <!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property> <!-- Drop and re-create the database schema on startup --> <property name="hbm2ddl.auto">update</property> <!-- Names of the entity mapping files --> <mapping resource="Stock.hbm.xml"/> </session-factory> </hibernate-configuration> ``` #### 定义实体类与映射文件 假设有一个名为`Stock`的数据表,则相应的Java模型类和对应的XML映射文件如下所示: ##### Java Model Class (`Stock.java`) ```java package com.example.model; public class Stock { private Integer stockId; private String stockCode; private String stockName; public Integer getStockId() { return this.stockId; } public void setStockId(Integer stockId) { this.stockId = stockId; } public String getStockCode() { return this.stockCode; } public void setStockCode(String stockCode) { this.stockCode = stockCode; } public String getStockName() { return this.stockName; } public void setStockName(String stockName) { this.stockName = stockName; } } ``` ##### XML Mapping File (`Stock.hbm.xml`) ```xml <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.example.model"> <class name="Stock" table="STOCK"> <id column="STOCK_ID" type="integer" name="stockId"> <generator class="native"/> </id> <property column="STOCK_CODE" type="string" length="10" not-null="true" name="stockCode"/> <property column="STOCK_NAME" type="string" length="20" not-null="true" name="stockName"/> </class> </hibernate-mapping> ``` 上述例子展示了如何建立一个简单的Hibernate环境,并指定了与之关联的一个数据表结构。这有助于理解如何编写必要的配置文件以实现对象关系映射(ORM)[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值