`

实体关系映射 一对多

 
阅读更多

所用工具eclipse sqlserver2000

1.建立web 工程bank 在src文件夹下建立两个包second 和sec.test

在second包下创建实体类JD.java  QX.java 以及映射文件JD.hbm.xml   QX.hbm.xml

在sec.test包下建立测试类Demol.java

2.引入hibernate的几个核心jar包,以及sqlserver2000的三个驱动包

JD.java代码

package second;

public class JD {
	private Long jdid;
	private String jdName;	
	private QX qx;
	public JD() {
		super();
	}
	public QX getQx() {
		return qx;
	}

	public void setQx(QX qx) {
		this.qx = qx;
	}

	public Long getJdid() {
		return jdid;
	}
	public void setJdid(Long jdid) {
		this.jdid = jdid;
	}
	public String getJdName() {
		return jdName;
	}
	public void setJdName(String jdName) {
		this.jdName = jdName;
	}
	

}

 

 QX.java代码

package second;

import java.util.HashSet;
import java.util.Set;

public class QX {
	private int qxid;
	private String qxName;
	private Set jds=new HashSet();
	public QX() {
		super();
	}	
	public Set getJds() {
		return jds;
	}

	public void setJds(Set jds) {
		this.jds = jds;
	}

	public int getQxid() {
		return qxid;
	}
	public void setQxid(int qxid) {
		this.qxid = qxid;
	}
	public String getQxName() {
		return qxName;
	}
	public void setQxName(String qxName) {
		this.qxName = qxName;
	}
	

}

 

 QX.hbm.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 package="second">
	<class name="QX" table="tbl_qx">
	<id name="qxid" >
		<generator class="native" />
	</id>
	
	<property name="qxName" >
	</property>

	<!-- jds属性,本类与JD是一对多 -->
	  <set name="jds" inverse="true" cascade="all">
            <key>
                <column name="qxid" />
            </key>
            <one-to-many class="JD" />
        </set> 
	</class>
	</hibernate-mapping>

 JD.hbm.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 package="second">
	<class name="JD" table="tbl_jd">
	<id name="jdid" >
		<generator class="assigned" />
	</id>
	
	<property name="jdName" >
	</property>

   <many-to-one name="qx" column="qxid" class="QX"/>
	</class>
	</hibernate-mapping>

 demol.java代码

package sec.test;

import java.util.HashSet;
import java.util.Set;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

import second.JD;
import second.QX;

public class Demol {
	@Test
	public void add(){
		Configuration cfg=new Configuration();
		cfg.configure();
		SessionFactory sf=cfg.buildSessionFactory();
		Session se=sf.openSession();
		Transaction tr=se.beginTransaction();
		try{
			QX q=new QX();
			JD j1=new JD();
			JD j2=new JD();
			JD j3=new JD();
			q.setQxName("长安区");
			
			j1.setJdid(61002901L);
			j1.setJdName("五星");
			j1.setQx(q);
			
			j2.setJdid(61002902L);
			j2.setJdName("栾镇");
			j2.setQx(q);
			
			j3.setJdid(61002903L);
			j3.setJdName("土门");
			j3.setQx(q);
			
			Set s=new HashSet();
			s.add(j1);
			s.add(j2);
			s.add(j3);
			q.setJds(s);
			se.save(q);
			se.save(j1);
			se.save(j2);
			se.save(j3);
			tr.commit();
		}catch(Exception e){
			if (null != tr)
				tr.rollback();
		}finally{
			se.close();
		}	
	}
	@Test
	public void delete(){
		Configuration cfg=new Configuration();
		cfg.configure();
		SessionFactory sf=cfg.buildSessionFactory();
		Session se=sf.openSession();
		Transaction tr=se.beginTransaction();
		try{
			 String hql="from JD where jdName=?";
			 System.out.println(tr);
		     Query query=se.createQuery(hql);
	    
		     query.setString(0, "五星");
		     JD j=(JD)query.uniqueResult();
	     
		     se.delete(j);
			 tr.commit();		
		}
		catch(Exception e){
			if (null != tr)
				tr.rollback();
		}finally{
			se.close();
		}
	}
	public static void main(String[] args) {
		new Demol().delete();
		
	}
	
}

 

 

 

分享到:
评论

相关推荐

    hibernate 映射关系学习入门 多对多实体映射

    2. **关系属性**:在两个实体类中,分别定义一个表示多对多关系的集合属性,如`List`或`Set`,并使用`@ManyToMany`注解。 3. **中间表配置**:通过`@JoinTable`注解定义中间表的详细信息,包括表名、连接字段等。 4....

    JPA一对一,一对多,多对多关系映射

    **概念**:一对多关系表示一个实体可以与多个其他实体相关联,比如一个用户可以有多个订单。在数据库中,这通常通过在多方实体的表中添加外键实现。 **配置方式**: - 在一方实体上使用`@OneToMany`注解,表示一个...

    ibatis 一对多关系映射

    一对多关系在数据库设计中非常常见,它意味着一个实体可以与多个其他实体关联。例如,一个用户可能有多个订单,或者一个部门包含多个员工。在Ibatis中,这种关系可以通过配置XML映射文件或使用注解来实现。 首先,...

    EF6多对多,一对多关系映射样例代码

    总结来说,EF6允许开发者通过Fluent API在C#中灵活地配置Oracle数据库的实体关系,包括多对多和一对多关系。理解并熟练运用这些关系对于开发高效且易于维护的ORM应用至关重要。在实践中,可以根据业务需求进行调整,...

    ibatis 一对多 多对多完整映射

    **一对多关系映射** 在数据库设计中,一对多关系是指一个父记录可以与多个子记录关联,例如,一个用户可以有多个订单。在iBATIS中,我们可以通过配置XML映射文件来实现这种关系。 1. **配置映射文件** 在`ibatis...

    hibernate学习入门一对多实体映射源码

    在数据库设计中,一对多关系是一种常见的关联类型,意味着一个父实体可以有多个子实体,而每个子实体只能属于一个父实体。例如,一个学生可以对应多门课程,而一门课程只能被一个学生选修。 三、配置一对多映射 在...

    Hibernate实体关系映射(new).ppt

    Hibernate实体关系映射 一对一关系 一对多关系 多对多关系Hibernate实体关系映射

    映射多对多及一对一关系

    #### 一、多对多关系映射 在数据库设计中,当两个实体之间存在多对多的关系时,通常会使用一个关联表来维护这种关系。例如,在给定的例子中,`Employees`表和`Roles`表之间的关系即为多对多关系。 **映射示例:** ...

    hibernate关联映射详解SSH 多对多,一对多关系对象映射

    在数据库中,一对多关系意味着一个表中的记录可以与另一个表中的多个记录相关联。在Hibernate中,这可以通过在实体类中使用`@OneToMany`注解来实现。该注解定义了一个实体可以拥有多个其他实体的实例。例如,一个...

    oracle 数据库关系映射

    - 在一对多关系中,一个实体可以与多个其他实体关联。为了正确地将一对多关系映射到数据库中,需要在“多”的一端创建外键指向“一”的一端。 - 例如,在员工和部门的关系中,一个部门可以有多个员工。因此,在...

    jpa的实体映射关系7种

    双向一对多关系中,一方实体可以拥有多个另一方实体,而另一方实体也知晓这个关系。双方都需要使用`@OneToMany`和`@ManyToOne`注解来定义关系,且`mappedBy`应设置在`@OneToMany`的一侧。 5. **双向多对一**: 相...

    注解框架实体类映射

    如@Entity表示该类为数据库表的实体,@Table定义表名,@Id标识主键,@GeneratedValue指定主键生成策略,@Column定义字段与列的对应,@OneToMany、@ManyToOne、@OneToOne和@ManyToMany则用于处理多对一、一对多、一对...

    Hibernate映射一对多关联关系

    总结来说,使用Hibernate映射一对多关联关系涉及到实体类的设计、数据库关系模型的构建以及映射文件的编写等多个方面。正确地实现这些步骤可以帮助我们高效地管理和操作数据,提高应用程序的性能和可维护性。

    SpringBoot中mybatis表关联映射关系(一对多嵌套:结果方式)

    SpringBoot 中 MyBatis 表关联映射关系(一对多嵌套:结果方式) 在 SpringBoot 中,MyBatis 是一个非常流行的持久层框架,它提供了强大的持久化功能,能够将 Java 对象与数据库表进行映射。在实际开发中,我们经常...

    Hibernate_实体关联关系映射--学习总结

    实体关联关系映射涉及一对一、一对多、多对多等多种形式,而这些映射方式又可以分为单向和双向,依据使用的是主键还是外键,以及是否使用连接表。接下来,我们详细介绍这些知识点。 ###Hibernate实体关联关系映射...

    MyBatis一对多映射

    3. 映射文件:在MyBatis的XML映射文件中,通过`&lt;association&gt;`标签定义一对多关系。`&lt;collection&gt;`子标签用于指定集合属性,`property`表示Java类中的字段名,`select`属性则是用来查询从表数据的SQL语句。 例如: ...

    MyBatis_关系映射之一对多-src.zip

    在这个名为"MyBatis_关系映射之一对多-src.zip"的压缩包中,我们很显然会探讨MyBatis中的一对多关系映射这一核心概念。 在数据库设计中,一对多关系是常见的实体关系类型,意味着一个父表(或父实体)可以与多个子...

    mybatis关系映射之一对多和多对一

    在一对多关系中,一个实体可以对应多个其他实体。例如,一个用户可以有多个订单。在MyBatis中,我们可以使用Collection类型来实现一对多关系映射。下面是一个简单的示例: 用户实体: ```java public class Person ...

Global site tag (gtag.js) - Google Analytics