`
chengyu2099
  • 浏览: 468794 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

hibernate 一对多单向、双向关联

阅读更多
一个老师 -- 关联 多个学生

create table STUDENT  (
   ID                   NUMBER(16)                      not null,
   STUDENT_NAME              VARCHAR(20),
   TEACHER_ID           NUMBER(16),
   constraint PK_STUDENT primary key (ID)
);

create table TEACHER  (
   ID                   NUMBER(16)                      not null,
   TEACHER_NAME         VARCHAR(22),
   constraint PK_TEACHER primary key (ID)
);

---PO---
public class Teacher implements java.io.Serializable {

	// Fields

	private Long id;
	private String teacherName;

public class Student implements java.io.Serializable {

	// Fields

	private Long id;
	private String studentName;
	private Long teacherId;
	private Teacher teacher;  // 老师

配置文件
<hibernate-mapping>
    <class name="com.po.Teacher" table="TEACHER">
        <id name="id" type="java.lang.Long">
            <column name="ID" precision="16" scale="0" />
            <generator class="sequence" />
        </id>
        <property name="teacherName" type="java.lang.String">
            <column name="TEACHER_NAME" length="22" />
        </property>
    </class>
</hibernate-mapping>

<hibernate-mapping>
    <class name="com.po.Student" table="STUDENT">
        <id name="id" type="java.lang.Long">
            <column name="ID" precision="16" scale="0" />
            <generator class="sequence" />
        </id>
        <property name="studentName" type="java.lang.String">
            <column name="STUDENT_NAME" length="20" />
        </property>
        <property name="teacherId" type="java.lang.Long">
            <column name="TEACHER_ID" precision="16" scale="0" />
        </property>
        <many-to-one name="teacher" class="com.po.Teacher" column="teacher_id" fetch="select" lazy="false" cascade="save-update"></many-to-one>
    </class>
</hibernate-mapping>

测试代码

/**
 * Test.java
 * com.hib
 *
 * Function: TODO 
 *
 *   ver     date      		author
 * ──────────────────────────────────
 *   		 Mar 31, 2010 		程仁银
 *
 * Copyright (c) 2010,  All Rights Reserved.
*/

package com.hib;

import java.util.List;

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

import com.po.Address;
import com.po.Person;
import com.po.Student;

/**
 * ClassName:Test
 * Project: 
 * Company: LINKAGE
 *
 * @author   程仁银
 * @version  
 * @since    Ver 1.1
 * @Date	 Mar 31, 2010		1:56:43 PM
 *
 * @see 	 
 */
public class Test {

	/**@author . 程仁银
	 * @email  . 13813375172@139.com
	 * @createTime .Mar 31, 2010 1:56:44 PM
	 * @parameters . 
	 * @description .
	 */
	public static void main(String[] args) 
	{
		SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
		Session session = sessionFactory.openSession();
		Transaction tx = session.beginTransaction();
//		业务逻辑测试
	
		Query query=session.createQuery("from Student u");
		List<Student> list = query.list();
		for(Student s:list)
		{
			System.out.println(
					s.getId()+" "+s.getStudentName()+
					"======"+s.getTeacher().getTeacherName());
		}
		tx.commit();
	}

}

配置下双向关联
在原有的基础上修改,主要是修改teacher
public class Teacher implements java.io.Serializable {

	// Fields

	private Long id;
	private String teacherName;
	
	private Set<Student> student = new HashSet<Student>();
 <class name="com.po.Teacher" table="TEACHER">
        <id name="id" type="java.lang.Long">
            <column name="ID" precision="16" scale="0" />
            <generator class="sequence" />
        </id>
        <property name="teacherName" type="java.lang.String">
            <column name="TEACHER_NAME" length="22" />
        </property>
        <set name="student" inverse="true" fetch="select" cascade="save-update" lazy="true">
        	<key column="teacher_id"></key>
        	<one-to-many class="com.po.Student"/>
        </set>
    </class>
分享到:
评论

相关推荐

    hibernate一对多,多对一,一对多双向关联

    “Hibernate 一对多,多对一,一对多双向关联”是指在Java持久化框架Hibernate中,实体间常见的三种关联关系。在数据库设计中,这种关联关系是常见的,例如一个用户可以有多个订单(一对多),一个订单对应一个用户...

    hibernate03:多对一单向关联、多对一双向关联

    本文主要探讨的是Hibernate中的两种关联关系:多对一单向关联和多对一双向关联。通过理解这两种关联方式,我们可以更好地设计和实现复杂的数据库模型。 首先,我们来看**多对一单向关联**。这种关联意味着一个实体...

    Hibernate一对多单向关联映射

    通过以上内容,我们对Hibernate中的一对多单向关联映射有了全面的理解,包括其配置方式、代码实现、使用技巧以及需要注意的细节。在实际项目开发中,正确理解和运用这些知识能够有效地提升数据操作的效率和代码的可...

    Hibernate双向一对一关联映射(注解版)

    在Hibernate中,一对一关联映射分为单向和双向。单向一对一映射通常涉及一个实体持有另一个实体的引用,而双向一对一映射则意味着两个实体都可以互相引用。这种关联关系在数据库层面通常通过主键外键约束来实现,但...

    Hibernate一对一单向外键关联 (联合主键annotation)

    首先,一对一关联可以分为两种类型:单向和双向。在单向一对一关联中,只有一个实体知道另一个实体的存在,而另一个实体并不知情。这里我们讨论的是单向外键关联,即一方实体持有了另一方的外键。 在Hibernate中,...

    hibernate一对多双向

    在探讨“Hibernate一对多双向”这一主题时,我们首先需要理解Hibernate框架以及它在Java开发中的重要性。Hibernate是一个开放源代码的对象关系映射(ORM)框架,它为Java应用程序提供了一种将对象模型与数据库模型相...

    hibernate一对一之唯一外键关联(双向关联)

    - 虽然一对一关联提供了便利,但过多的一对一关联可能会影响性能,因为每次查询可能涉及多个表,增加数据库访问的复杂性。因此,应谨慎设计实体间的关系。 8. **实例应用** - 在实际项目中,一对一关联常用于用户...

    hibernate关联映射详解

    包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。

    Hibernate一对一唯一外键关联映射(单向关联)

    Hibernate一对一关联概述 一对一关联分为两种类型:共享主键关联(Primary Key Join)和唯一外键关联(Unique Foreign Key Join)。在本例中,我们讨论的是后者,即通过一个独立的外键字段在两个表之间建立一对一...

    Hibernate关联映射

    9. Hibernate 一对一外键双向关联、主键双向关联、连接表双向关联、一对多外键双向关联、一对多连接表双向关联、多对多双向关联: 这些关联方式与单向关联类似,区别在于两个实体类都知道彼此的关联。在双向关联中...

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

    在本文中,我们将详细介绍Hibernate一对一唯一外键关联映射的概念、配置方法和实践应用。 一对一唯一外键关联映射的概念 在Hibernate中,一对一唯一外键关联映射是指两个实体之间的关联关系,其中一个实体作为外键...

    hibernate多对多关联映射(单项关联)

    总的来说,这篇博客和相关代码示例为开发者提供了一个理解和实现Hibernate中多对多单向关联的起点,帮助他们更好地处理复杂的数据库关系映射。学习和实践这部分内容对于提升Java后端开发能力,特别是使用Hibernate...

    hibernate一对一关联关系

    在实体类之间,Hibernate支持多种关联关系,包括一对一(One-to-One)、一对多(One-to-Many)和多对多(Many-to-Many)。本资源主要探讨的是“hibernate一对一关联关系”。 一对一关联关系在现实世界中很常见,...

    hibernate一对多关联映射

    一、Hibernate一对多关联映射 1.1 单向关联:在单向一对多关联中,一个实体类知道另一个实体类,而另一个实体类并不知情。这通常通过在一方添加一个集合属性来实现,该集合包含另一方的实例。例如,`Department`类...

    hibernate一对多与多对一

    本篇文章将详细讲解"hibernate一对多与多对一"的关系映射概念,以及如何在实际开发中进行配置和使用。 首先,我们来看一下“一对多”关系。在现实世界中,这种关系可以对应到例如一个班级有多个学生,或者一个人...

    Hibernate一对多关联

    标题 "Hibernate一对多关联" 涉及到的是Java持久化框架Hibernate中的一个重要关系映射概念,这在开发企业级应用时非常常见。在数据库设计中,一对多关系表示一个表(父表)中的记录可以与另一个表(子表)中的多个...

    Hibernate双向关联代码示例

    1. **单向一对多关联(OneToMany)** 在这个关联中,一个父对象可以有多个子对象,但子对象并不知道父对象的存在。在代码中,我们通常在父类中添加一个子类集合的属性,并使用`@OneToMany`注解标记。例如: ```...

    多对多双向关联

    首先,我们来看如何在Java中使用JPA(Java Persistence API)或Hibernate(一个流行的JPA实现)来设置多对多双向关联。双向关联意味着两个实体类都将持有对彼此的引用。例如,考虑一个“学生”和“课程”的场景,每...

Global site tag (gtag.js) - Google Analytics