`
Supanccy2013
  • 浏览: 220753 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ssh中junit 测试 hibernate 1对多单向关联(不推荐使用这种关联)

阅读更多
主要介绍效率最低的一对多单向关联(实际中推荐使用一对多双向关联)。下面是实例:
实例的两个实体是:钱包、钱 。此两个实体关系是一对多:
1,Money实体:该实体对应的是“多”的一端,在一对多单向关联中不维护关系。
package com.dd.domain;
public class Money {
	private int id;
	private int miane;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public int getMiane() {
		return miane;
	}
	public void setMiane(int miane) {
		this.miane = miane;
	}
}

2,Money的配置文件
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.dd.domain">
	<!-- class元素是指定的类与表的对应关系 一对一的关系-->
	<class name="Money" table="money">
		<id name="id" type="integer" column="id">
			<generator class="native" />
		</id>
		<property name="miane"/>
	</class>
</hibernate-mapping>

3,QianBao实体类:在一对多单向关联中充当“一”的一端,其维护关联关系。
package com.dd.domain;
import java.util.HashSet;
import java.util.Set;
public class QianBao {
	private int id;
	private String name;
	private Set<Money> moneys = new HashSet<Money>();
	//该set属性起到维护关系的作用
	public Set<Money> getMoneys() {
		return moneys;
	}
	public void setMoneys(Set<Money> moneys) {
		this.moneys = moneys;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

4,QianBao的配置文件
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.dd.domain">
	<!-- class元素是指定的类与表的对应关系 一对一的关系-->
	<class name="QianBao" table="qianbao">
		<id name="id" type="integer" column="id">
			<generator class="native" />
		</id>
		<property name="name"/>
		<set name="moneys">
		       <key column="qianbao_id"></key>
		       <one-to-many class="Money"/>
		</set>
	</class>
</hibernate-mapping>

5,测试类:需要Junit框架的jar包。
package com.dd.test;
import junit.framework.TestCase;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.classic.Session;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.dd.domain.Money;
import com.dd.domain.QianBao;
public class HibernateTest extends TestCase {
	ApplicationContext act = new ClassPathXmlApplicationContext("applicationContext.xml");
	SessionFactory sessionFactory = act.getBean("sessionFactory",SessionFactory.class);
	public void testOne2ManySingle2(){
		 Session session = sessionFactory.openSession();
		 Transaction at = session.beginTransaction();
		 
		 Money money1 = new Money();
		 money1.setMiane(5);
		 session.save(money1);
		 
		 Money money2 = new Money();
		 money2.setMiane(5);
		 session.save(money2);

		 QianBao qianbao = new QianBao();
		 qianbao.setName("啄木鸟");
		 qianbao.getMoneys().add(money1);
		 qianbao.getMoneys().add(money2);
		 session.save(qianbao);
		 
		 at.commit();
		 session.close();
	}
}


6,hibernate执行时发送的sql语句:
Hibernate: 
    select
        hibernate_sequence.nextval 
    from
        dual
Hibernate: 
    select
        hibernate_sequence.nextval 
    from
        dual
Hibernate: 
    select
        hibernate_sequence.nextval 
    from
        dual
Hibernate: 
    insert 
    into
        money
        (miane, id) 
    values
        (?, ?)
Hibernate: 
    insert 
    into
        money
        (miane, id) 
    values
        (?, ?)
Hibernate: 
    insert 
    into
        qianbao
        (name, id) 
    values
        (?, ?)
Hibernate: 
    update
        money 
    set
        qianbao_id=? 
    where
        id=?
Hibernate: 
    update
        money 
    set
        qianbao_id=? 
    where
        id=?

正因为每次插入都需要update,所以效率最底下。
分享到:
评论

相关推荐

    使用junit测试ssh中的dao

    标题“使用junit测试ssh中的dao”涉及到的是Java开发中的单元测试技术,特别是针对SSH(Struts2、Spring、Hibernate)框架中的数据访问对象(DAO)进行测试。SSH是Java Web开发中常用的三大开源框架,它们协同工作以...

    hibernate和junit的jar

    标题中的“hibernate和junit的jar”指的是两个重要的Java开发工具——Hibernate ORM框架的jar文件和JUnit测试框架的jar文件。这两个组件在Java应用开发中起着至关重要的作用。 **Hibernate ORM框架**是Java领域中最...

    SSH(struts2,Hibernate,Spring)整合及测试亲测可用

    SSH,即Struts2、Hibernate和Spring的组合,是Java Web开发中的一种经典框架集成,用于构建企业级的MVC(Model-View-Controller)应用。这个整合旨在提供一个高效、灵活且可扩展的开发环境,使开发者可以专注于业务...

    Junit测试案例使用

    Junit 测试案例使用 从 Junit 测试案例的标题、描述、标签和部分内容中,我们可以提取出...Junit 测试案例使用涉及了 Junit 测试的概念、本质、优点、分类、下载和安装、架构、命令模式、测试步骤等多方面的知识点。

    springmvc ssh通用的junit测试样例

    总的来说,Spring MVC SSH通用的JUnit测试样例是Java Web开发中不可或缺的工具,它们帮助开发者构建健壮、可维护的代码,同时提高开发效率。这些测试样例不仅提供了测试的模板,也是理解SSH和Spring MVC测试策略的...

    junit测试spring,hibernate的dao层代码

    将 `JUnit` 与 `Spring`、`Hibernate` 结合使用,可以对 `DAO(Data Access Object)` 层进行有效的测试,确保数据访问逻辑的正确性。 首先,`DAO` 层是业务逻辑和数据库操作之间的隔离层,通常包含了增删改查等...

    hibernate_____实现ssh2用的hibernate

    标题 "hibernate_____实现ssh2用的hibernate" 提到的是在SSH2(Struts、Spring、Hibernate)框架中使用Hibernate的情况。SSH2是中国Java Web开发领域中广泛使用的三大开源框架集成,用于构建高效、可扩展的企业级...

    spring+hibernate整合列子,用junit测试增删改查都实现(MySQL包含表)

    本项目"spring+hibernate整合列子"是一个实例教程,展示了如何将这两个框架结合在一起,用于实现对MySQL数据库的CRUD(创建、读取、更新、删除)操作,并且通过JUnit进行单元测试,确保功能的正确性。 首先,Spring...

    实验5 JUnit测试框架的使用.doc

    JUnit 是一个流行的单元测试框架,广泛应用于 Java 项目中,本文将详细介绍 JUnit 测试框架的使用,并提供了两个示例来帮助读者更好地理解和掌握 JUnit 的使用。 一、JUnit 测试框架的使用 为了使用 JUnit 测试...

    在java中使用 junit单元测试

    在Java中使用JUnit单元测试是软件开发过程中不可或缺的一部分。单元测试是指在开发过程中,对代码的一部分进行测试,以确保代码的正确性和可靠性。在Java中,JUnit是最流行的单元测试框架之一。 单元测试的重要性 ...

    hibernate one-to-one 一对一唯一外键关联映射_单向 and 双向

    例如,在人员管理系统中,一个人员对应一个身份证,使用一对一唯一外键关联映射可以描述这种关联关系。 以下是一个简单的测试用例: ```java import junit.framework.TestCase; import org.hibernate.Session; ...

    SSH一对多(两表双向关联查询)

    SSH一对多(两表双向关联查询)是一种在Java Web开发中常见的数据操作方式,主要涉及到Spring、Struts和Hibernate这三大框架的集成使用。在这个场景下,我们将关注于如何通过Hibernate来实现数据库中的两个表——...

    junit+hibernate3.2+spring2.5工程

    在软件开发领域,测试是不可或缺的一部分,而Java开发中的Junit框架则是单元测试的重要工具。结合持久层框架Hibernate和依赖注入框架Spring,可以构建出高效、可维护的业务应用。本工程“junit+hibernate3.2+spring...

    JUnit(针对spring和hibernate)

    JUnit是Java编程语言中最常用的单元测试框架,它允许开发者编写可重复执行的测试代码,以确保应用程序的各个模块正常工作。在与Spring和Hibernate这两个流行框架集成时,JUnit发挥着至关重要的作用,确保了业务逻辑...

    在Eclipse中使用JUnit4进行单元测试

    在Eclipse中使用JUnit4进行单元测试是一种常见的Java开发实践,它可以帮助开发者确保代码的正确性和稳定性。单元测试是软件开发中的重要环节,通过编写针对代码各个独立模块的测试用例,可以验证代码功能是否按预期...

    Hibernate Junit测试增删改查(DB2版本的)

    本教程将聚焦于使用Hibernate进行Junit测试,实现对DB2数据库的增删改查操作。下面,我们将详细探讨相关知识点。 首先,让我们理解Hibernate的核心概念。Hibernate是一个基于Java的开源持久化框架,它允许开发者用...

    ssh中hibernate5的整合

    8. **测试**: 编写JUnit测试用例,验证SSH整合后的功能是否正常工作,例如检查数据库操作是否成功,事务管理是否生效等。 文件`spring04`可能包含了Spring整合Hibernate的示例配置或代码,可以作为学习和参考的资源...

    Myeclipse中的JUnit测试详细

    在MyEclipse中使用JUnit,首先需要安装JUnit库。MyEclipse自带了JUnit的支持,但可能需要更新到最新版本以获得更好的兼容性和性能。这可以通过右键点击项目 -&gt; Build Path -&gt; Configure Build Path -&gt; Libraries -&gt; ...

    junit测试测试代码

    虽然JUnit本身不内置模拟和桩功能,但可以与其他库(如Mockito)结合使用,实现对依赖对象的模拟,以便隔离测试。 10. **持续集成**: JUnit测试通常会集成到持续集成工具(如Jenkins、Travis CI)中,自动化构建...

Global site tag (gtag.js) - Google Analytics