Hibernateo之一对一,多对一

         今天分享的是一对一 ,多对一,诺有不当之处请斧正。

一对一

  思路:

1:第一步:

在Src/main/java中写entity包,注意:为两个实体类建立关系, 写get,set方法。

2:第二步:

写映射文件

主表:

例:



<hibernate-mapping>
    <class name="com.entity.Ren" table="REN">
        <id name="rid" type="int">
            <column name="RID" />
            <generator class="native" />

//native 自动增加
        </id>
        <property name="rname" type="java.lang.String">
            <column name="RNAME" />
        </property>
   

<!--   一对一     cascade  是级联  属性有  下图有详细讲解 -->

 <one-to-one name="ka" class="com.entity.Ka"  cascade="all">
        </one-to-one>


    </class>
</hibernate-mapping>



从表:


<hibernate-mapping>
    <class name="com.entity.Ka" table="KA">
        <id name="rid" type="int">
            <column name="RID" />
            <generator class="foreign" >
              <param name="property">ren</param>
            </generator>
        </id>
        <property name="kname" type="java.lang.String">
            <column name="KNAME" />
        </property>
        <one-to-one name="ren" class="com.entity.Ren"></one-to-one>
    </class>
</hibernate-mapping>


3:第三步 在src/main/resources下

写hibernate.cfg.xml 文件

<!--读取映射文件-->

例子:

 <mapping resource="com/entity/Ka.hbm.xml"/>
<mapping resource="com/entity/Ren.hbm.xml"/>


4;在src/test/java下写测试类


@Before
public void before(){
//通过DbHelper获取Connection
//通过配置文件获取session
//读取配置文件
Configuration configuration=new Configuration().configure();
sessionFactory = configuration.buildSessionFactory();
session = sessionFactory.openSession();
//开始事务
transaction = session.beginTransaction();
}

@After
public void after(){
//提交事务
transaction.commit();
//关闭资源
session.close();
sessionFactory.close();
}




//查询
@Test
public void query(){
Ren ren= (Ren) session.get(Ren.class,3);
System.out.println(ren.getKa().getRid());
}

//删
@Test
public void delete(){
Ren ren=(Ren) session.get(Ren.class,5);
session.delete(ren);
}




多对一:


1:第一步:

在Src/main/java中写entity包,注意:为两个实体类建立关系, 写get,set方法。

//一个类别对应多个电器
private Set<Product> product=new HashSet<Product>();

private Category category;

2:第二步

写映射文件


<!--多-->

<hibernate-mapping>
    <class name="com.entity.Category" table="CATEGORY">
        <id name="category_id" type="int">
            <column name="CATEGORY_ID" />
            <generator class="native" />
        </id>
        <property name="category_name" type="java.lang.String">
            <column name="CATEGORY_NAME" />
        </property>


        <set name="product" cascade="save-update" >
            <key>
                <column name="category_id" />
            </key>
            <one-to-many class="com.entity.Product" />
        </set>








<!--  1  -->

    <class name="com.entity.Product" table="PRODUCT">
        <id name="product_no" type="int">
            <column name="PRODUCT_NO" />
            <generator class="native" />
        </id>
        <property name="product_name" type="java.lang.String">
            <column name="PRODUCT_NAME" />
        </property>
        <property name="product_price" type="double">
            <column name="PRODUCT_PRICE" />
        </property>
        <many-to-one name="category" class="com.entity.Category" column="category_id">
        
        </many-to-one>
    </class>
</hibernate-mapping>
    </class>
</hibernate-mapping>



3:第三步 在src/main/resources下

写hibernate.cfg.xml 文件

与一对一类似!


4;在src/test/java下写测试类

不再啰嗦与一对一类似!



奉上图纸一张!






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值