`

hibernate笔记(二) 多对一 Many to One

阅读更多

User.java

package com.goby.Hibernate.bean;

public class User {
	private int id;
	private String name;
	private Group group;
	public Group getGroup() {
		return group;
	}
	public void setGroup(Group group) {
		this.group = group;
	}
	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;
	}
}

 

 

Group.java

package com.goby.Hibernate.bean;

public class Group {
	
	private int id;
	
	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;
	}

	private String name;
}	

 

 

Use.hbm.xml

<?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.goby.Hibernate.bean">

	<class name="User" table="t_user">
		
		<id name="id">
			<generator class="native"/>
		</id>
		
		<property name="name"></property>
		<many-to-one name="group" column="groupid"
			class="com.goby.Hibernate.bean.Group" cascade="all"  />
	</class>
	
</hibernate-mapping>

 

Group.hbm.xml

<?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.goby.Hibernate.bean">

	<class name="Group" table="t_group">
		
		<id name="id">
			<generator class="native"/>
		</id>
		
		<property name="name"></property>
		
	</class>
	
</hibernate-mapping>

 

hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory >
	<property name="hibernate.connection.url">jdbc:mysql://localhost/hibernateManytoOne</property>
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">seebig</property>
		<property name="hibernate.show_sql">true</property>
		<property name="hibernate.format_sql">true</property>
		
		<mapping resource="com/goby/Hibernate/bean/User.hbm.xml" />
		<mapping resource="com/goby/Hibernate/bean/Group.hbm.xml" />
	</session-factory>
</hibernate-configuration>

 

测试代码:Test.java

package test;

import junit.framework.TestCase;

import org.hibernate.Session;

import com.goby.Hibernate.bean.Group;
import com.goby.Hibernate.bean.HibernateUtils;
import com.goby.Hibernate.bean.User;

public class test extends TestCase {
	
	public void testSave(){
		Session session = null;
		try{
			
			session = HibernateUtils.getSession();
			session.beginTransaction();
			
			Group group = new Group();
			group.setName("seebig");
			
			User user = new User();
			user.setName("goby");
			user.setGroup(group);
			
			session.save(user);
			
			
			session.getTransaction().commit();
			
		}catch(Exception ex){
			ex.printStackTrace();
			session.getTransaction().rollback();
		}finally{
			HibernateUtils.closeSession(session);
		}
	}
	
	public void testload(){
		Session session = null;
		try{
			
			session = HibernateUtils.getSession();
			session.beginTransaction();
			
			/*
			 * 相当于sql
			 * select * from t_user u left outer join t_group g on u.groupid=g.id where u.id=?
			 */
			User user = (User)session.get(User.class, 2);
			System.out.println("user.name="+user.getName());
			System.out.println("group.name="+user.getGroup().getName());
			session.getTransaction().commit();
			
		}catch(Exception ex){
			ex.printStackTrace();
			session.getTransaction().rollback();
		}finally{
			HibernateUtils.closeSession(session);
		}
	}
}

 

 

 

分享到:
评论

相关推荐

    Hibernate学习笔记

    关联映射是Hibernate的重要特性,包括一对一、一对多和多对多映射。一对一映射可以通过共享主键实现,例如Person与IdCard的关联,Person的主键与IdCard的主键相同。`&lt;one-to-one&gt;`标签用于定义这种关联,`...

    Hibernate映射笔记

    - `&lt;one-to-one&gt;`、`&lt;many-to-one&gt;`、`&lt;one-to-many&gt;`和`&lt;many-to-many&gt;`:分别用于一对一、一对多、多对一和多对多的关系映射,通过`&lt;class&gt;`元素的嵌套和属性如`inverse`、`cascade`等来控制关系的维护方式和级联...

    Hibernate笔记

    ### Hibernate笔记 #### 一、概述 Hibernate 是一个开源的对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互过程。通过使用Hibernate,开发者可以将对象模型与关系型数据库模型进行映射,从而避免...

    hibernate学习笔记文档

    - 在 XML 映射文件中使用 `&lt;one-to-many&gt;` 或 `&lt;many-to-many&gt;` 标签来配置这些关系。 - **查询操作**: - 使用 HQL(Hibernate Query Language)或 Criteria API 来执行复杂查询。 - 支持分页查询、动态查询等...

    hibernate笔记

    - 多对一:在一方类中添加对多方类的引用,使用`&lt;many-to-one&gt;`标签。 九、多对多映射 - 使用中间表进行映射,通常在双方类中都添加对对方的集合引用,分别使用`&lt;set&gt;`或`&lt;list&gt;`标签,并配合`&lt;many-to-many&gt;`标签...

    hibernate 学习笔记小结

    **Hibernate**支持多种关联关系映射,包括一对一、一对多、多对多等。 1. **一对一(One-to-One)**: - 可以通过`&lt;one-to-one&gt;`标签实现,通常用于表示两个实体之间的一对一关系。 2. **一对多(One-to-Many)**...

    Hibernate数据关联技术笔记

    M:N(多对多)关联则意味着一个实体可以与多个其他实体相关联,同时其他实体也可以与该实体相关联,如学生和课程之间的关系。在Hibernate中,通常使用`&lt;many-to-many&gt;`标签来建立这种关联,需要一个中间表来保存双方...

    Hibernate学习笔记,使用Hibernate做数据层非常方便

    本笔记主要探讨如何使用Hibernate进行数据层的操作,包括服务器端的分页查询以及多对一的映射关系。 1. **服务器端分页方法** 在给定的代码中,展示了如何使用Hibernate实现服务器端的分页查询。`findByAllOfTotal...

    Hibernate知识文档 知识点笔记纪要

    在多对一关联中,多个实体实例对应一个实例,通过`&lt;many-to-one&gt;`标签在多方定义外键,指向一方。级联操作允许对关联对象执行连锁操作,比如保存或删除。 六、一对一主键关联映射 一对一主键关联是指两个实体共享同...

    达内HIBERNATE学习笔记

    - `&lt;one-to-one&gt;`、`&lt;one-to-many&gt;`、`&lt;many-to-many&gt;`:表示关联关系的映射。 #### 2.3 id的内置生成器 - **常见生成器**: - `increment`:每次生成一个递增的值。 - `identity`:由数据库自动生成唯一标识符...

    Hibernate学习笔记_songjignhao_1

    此外,我们还提到了多对多关联关系,这通常涉及一个中间表来存储两个实体之间的关联。映射时,可以使用 `&lt;many-to-many&gt;` 标签,通过 `&lt;join-table&gt;` 子标签定义中间表及其关联字段。 对于集合类型的映射,如 Set、...

    hibernate 学习笔记3

    描述:本篇笔记深入探讨了Hibernate框架中一对多关系的映射及持久化对象状态管理,结合个人理解与实践经验,旨在为读者提供一份详实的学习资料。 ### 一、一对多关系映射详解 在Hibernate框架中,一对多关系是一种...

    hibernate详细笔记.

    6. **关联映射**: Hibernate支持一对一(One2One)、一对多(One2Many)、多对一(Many2One)和多对多(Many2Many)的关联映射。关联可以通过外键或复合主键实现,双向关联时需在两端都配置,并且一方需要指定`...

    Hibernate学习笔记.doc

    通过&lt;many-to-one&gt;标签,多的一端在数据库中添加外键,指向一的一端。cascade属性用于指定级联操作,如all表示在操作多端对象时,同时影响一端对象。 最后,在第五个项目中,我们学习了一对一主键关联映射,通过...

    Hibernate1对N案例笔记

    本案例将探讨如何使用Hibernate处理1对N的关系映射,即一个实体对象对应多个实体对象的关系。这里以部门和员工为例,部门可以包含多个员工,而每个员工则属于一个特定的部门。 首先,我们需要创建两个数据库表,一...

Global site tag (gtag.js) - Google Analytics