`

Hibernate级联操作

 
阅读更多
package com.secn.user;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.Test;


//在多的一端来维护表
public class SecnTest {
@Test
public void danxiangtianjia(){ //单行多对一
new SchemaExport(new AnnotationConfiguration().configure()).create(false, true);
NewsSort newsSort = new NewsSort();
newsSort.setSortName("news FenLei");
News news = new News();
news.setNewName("Li Lian Jie");
news.setNewsSort(newsSort);
SessionFactory sf = new AnnotationConfiguration().configure().buildSessionFactory();
Session session = sf.openSession();
session.beginTransaction();
session.save(news);
//System.out.println(newsSort.getSortName());
session.getTransaction().commit();
session.close();
sf.close();
}
@Test
public void shuangxiangtianjia(){ //双向多对一
//new SchemaExport(new AnnotationConfiguration().configure()).create(false, true);
News news1 = new News();
news1.setNewName("Li Lian Jie");
News news2 = new News();
news2.setNewName("Li Xiao Long");
NewsSort newsSort = new NewsSort();
newsSort.setSortName("news FenLei");
newsSort.getNews().add(news1);
newsSort.getNews().add(news2);
news1.setNewsSort(newsSort);
news2.setNewsSort(newsSort);
SessionFactory sf = new AnnotationConfiguration().configure().buildSessionFactory();
Session session = sf.openSession();
session.beginTransaction();
session.save(newsSort);
System.out.println(newsSort.getSortName());
session.getTransaction().commit();
session.close();
sf.close();
}
@Test
public void getNews(){ //读取记录
//new SchemaExport(new AnnotationConfiguration().configure()).create(false, true);
SessionFactory sf = new AnnotationConfiguration().configure().buildSessionFactory();
Session session = sf.openSession();
session.beginTransaction();
//@ManyToOne(cascade={CascadeType.ALL})
//cascade:只真对增删改;
//默认情况下也会地取出NewsSort的信息
News news = (News)session.get(News.class, 1);
session.getTransaction().commit();
session.close();
sf.close();
}
@Test
public void GetNewsSort(){ //读取分类
//new SchemaExport(new AnnotationConfiguration().configure()).create(false, true);
SessionFactory sf = new AnnotationConfiguration().configure().buildSessionFactory();
Session session = sf.openSession();
session.beginTransaction();
//默认情况下不会读取出News表的内容
//可以通过fetch=FetchType.EAGER(渴望|勤快)LAZY(懒惰)读取出来
NewsSort newsSort = (NewsSort)session.get(NewsSort.class, 1);
session.getTransaction().commit();
session.close();
sf.close();
}
@Test
public void getLoad(){ //读取记录
//new SchemaExport(new AnnotationConfiguration().configure()).create(false, true);
SessionFactory sf = new AnnotationConfiguration().configure().buildSessionFactory();
Session session = sf.openSession();
session.beginTransaction();
//@ManyToOne(cascade={CascadeType.ALL})
//cascade:只真对增删改;
//默认情况下也会地取出NewsSort的信息
//读新闻时默认不会读出新闻对应分类
News news = (News)session.load(News.class, 1);
System.out.println(news.getNewName());//在这一行调用时才会执行SQL语句
session.getTransaction().commit();
session.close();
sf.close();
}
@Test
public void getUpdateNews(){ //读取记录
//new SchemaExport(new AnnotationConfiguration().configure()).create(false, true);
SessionFactory sf = new AnnotationConfiguration().configure().buildSessionFactory();
Session session = sf.openSession();
session.beginTransaction();
//@ManyToOne(cascade={CascadeType.ALL})
//cascade:只真对增删改;
//默认情况下也会地取出NewsSort的信息
//在分类和新闻中不要都设计fetch=FetchType.EAGER属性
News news = (News)session.load(News.class, 1);
System.out.println(news.getNewsSort().getSortName());//在这一行调用时才会执行SQL语句
session.getTransaction().commit();
session.close();
sf.close();
}

}
分享到:
评论

相关推荐

    Hibernate级联操作一对多demo

    在这个" Hibernate级联操作一对多demo "中,我们将探讨如何在一对多的关系中应用级联操作。 一对多关系是数据库中常见的关系类型,它表示一个实体(如部门)可以有多个相关实体(如员工)。在Hibernate中,这种关系...

    Hibernate的级联操作(增,删,该)

    在Hibernate中,级联操作(Cascading Operations)是一种高级特性,它使得对象之间的关联关系在数据库层面得以同步更新。当我们对一个实体对象进行操作时,可以设置级联属性,让这些操作自动传播到与之相关联的其他...

    Hibernate级联操作.docx

    在 Hibernate 中,级联操作(Cascade)和反向属性(Inverse)是管理对象关系的重要概念,特别是在处理一对多(One-to-Many)或多对一(Many-to-One)关系时。 **级联操作(Cascade)** 级联操作定义了当主对象被...

    hibernate 级联查询

    Hibernate提供了级联操作来简化数据的保存、更新和删除等操作,使得开发者无需手动编写复杂的SQL语句,就能实现关联对象的联动处理。 **描述分析:** 虽然描述部分为空,但根据给定的博文链接,我们可以推测文章...

    hibernate级联增删改查

    本主题将深入探讨"hibernate级联增删改查",特别是针对"t_card主表"和"t_person从表"的关系。 首先,级联操作在Hibernate中是一种配置,用于指定当主表中的实体发生变化时,是否以及如何更新或删除关联的从表实体。...

    hibernate 级联(cascade和inverse)一对多

    一、Hibernate级联(Cascade) 级联操作允许我们将对一个实体的更改自动应用到与之关联的其他实体。在一对多关系中,如果一个实体(父实体)与多个实体(子实体)关联,设置级联属性可以确保在处理父实体时,子实体...

    hibernate many-to-many级联保存,级联更新,级联删除

    在Hibernate中,级联操作可以通过`cascade`属性进行配置。主要有以下几种级联类型: 1. `save-update`:当保存或更新父实体时,会自动保存或更新所有关联的子实体。 2. `merge`:在调用`session.merge()`时,不仅...

    Hibernate_级联关系说明_-_关于cascade和inverse的用法

    在探讨Hibernate框架中的级联操作(cascade)与控制权反转(inverse)之前,我们需要先对Hibernate有一个基本的理解。Hibernate是一个开放源代码的对象关系映射(ORM)框架,它为Java应用提供了一种将对象模型映射到...

    关于Hibernate级联删除的问题.doc

    在文档中提到的场景下,我们来详细探讨Hibernate级联删除的原理和配置方法。 首先,我们要理解关系映射中的几个关键概念。在给出的例子中,有四个表:A、AA、B和BB,它们之间存在一对多(one-to-many)和一对一...

    Hibernate 一对多、多对一、级联、加载、反转

    例如,如果在`User`和`Order`的关系中,我们希望由`User`来控制级联操作,可以将`@OneToMany`的`mappedBy`属性设在`User`上,然后设置`inverse`属性为`true`,使得`User`成为关系的主控方,这样在处理`User`时,级联...

    Hibernate的缓存级联查询

    在IT领域,尤其是在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它允许开发者用面向对象的方式操作数据库。尽管随着Spring Data JPA等现代技术的崛起,Hibernate的使用频率有所下降,但其核心...

    hibernate基础 二 关联映射 级联操作

    ### Hibernate基础之关联映射与级联操作 #### 第一部分:主键生成策略与对象状态管理 ##### 主键生成策略 在使用Hibernate框架时,合理的主键生成策略能够极大地简化开发工作并提升应用性能。Hibernate提供了多种...

    用hibernate做的省市县三级级联,

    总的来说,这个项目展示了如何使用Hibernate、Ajax和DWR来实现一个高效、用户友好的省市县三级级联选择功能。开发过程中涉及了ORM、MVC架构、数据库操作以及前端交互等多个方面,是学习和实践Web开发技能的好实例。

    java开始面试的第27天.doc

    1. Hibernate 级联操作与 `cascade` 属性: Hibernate 提供了级联操作功能,使得对一个实体的保存、更新、删除等操作可以自动影响与其关联的其他实体。在 Hibernate 中,`cascade` 属性用于指定这种级联行为。题目...

    hibernate笔记--云图智联

    ###Hibernate级联操作 级联操作包括级联添加、修改、删除和查看。在一对多或多对多关系中,配置级联类型可以控制当操作一个对象时,其关联对象的反应。例如,在一对多关系中,配置级联添加后,添加父对象时会自动为...

    Hibernate cascade (级联).doc

    ### Hibernate级联(Cascade)详解 #### 一、概述 Hibernate 是一款强大的对象关系映射 (ORM) 框架,它允许开发人员将 Java 对象模型映射到数据库表,从而极大地简化了数据访问层的开发工作。在 Hibernate 中,...

    用Struts2+Spring+Hibernate三大框架完成的级联操作

    在级联操作中,Hibernate可能被用来处理省市县和年月日的数据存取,通过HQL(Hibernate Query Language)或者Criteria API来执行SQL查询,获取级联选择的数据。 级联操作的核心在于数据间的关联,例如选择一个省后...

    JSON--List集合转换成JSON对象详解

    文中提到,直接使用fromObject(list)方法在Hibernate级联操作关联的对象上会报错,如果需要保留级联操作,就必须去掉映射文件中的级联配置。这是因为在进行JSON序列化时,Hibernate的关联关系可能会导致异常。 4. ...

    hibernate3.2的级联关系_JavaProject

    在Hibernate中,可以通过`@OneToMany`注解来定义这种关系,并通过`cascade`属性设置级联操作,例如`CascadeType.ALL`表示所有操作都将级联。 2. **一对一(OneToOne)**:这种关系意味着两个实体之间存在一对一的...

Global site tag (gtag.js) - Google Analytics