`
javaboys
  • 浏览: 16427 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Hibernate3.2 多对一学习笔记

阅读更多
案例:
      员工对部门 (多对一) many-to-one
1,设计实体模型  Department.java (部门实体), Employee.java(员工实体)
__________________________________
Department.java 代码清单

public class Department { 
private int id ; //部门ID
private String name ; //部门名称
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; 
}
}

Employee.java 代码清单:

public class Employee { 
private int id ; 
private String name ; 
private Department depart ;  //这里是重点.将此定为Department对象,hibernate加载一个员工对象时就加载了他所在部门的部门所有信息,
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; 
} 
public Department getDepart() {  
return depart; 
} 
public void setDepart(Department depart) { 
 this.depart = depart; 
}
}

配置 hbm 文件

Department.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">
<!--
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="org.javaboys.model.Department" >
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="native" />
        </id>
        <property name="name" type="java.lang.String"/>
    </class>
</hibernate-mapping>

Employee.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">
<!--
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="org.javaboys.model.Employee" >
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="native" />
        </id>
        <property name="name" type="java.lang.String"/>
        <many-to-one name="depart" column="depart_id"/>
        </class>
</hibernate-mapping>


编码业务操作类:
Hibernate session工厂

HibernateUtil.java

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

public final class HibernateUtil {
	private static SessionFactory sessionFactory;
private HibernateUtil(){
	
}
static{
	Configuration cfg = new Configuration().configure();
	sessionFactory = cfg.buildSessionFactory();
}
public SessionFactory getSessionFactory() {
	return sessionFactory;
}
public static Session getSession(){
	return sessionFactory.openSession();
}
}

Many2One.java 多对一例子测试类


import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.javaboys.model.Department;
import org.javaboys.model.Employee;

public class Many2One {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		add();
		
		Employee e = query(1);
		
		System.out.println(e.getDepart().getName());
	}
	static Department add(){
		Session s = null;
		try{
			Department depart = new Department();
			depart.setName("人事部");
			Employee emp = new Employee();
			emp.setDepart(depart);
			emp.setName("a");
			s = HibernateUtil.getSession();
			Transaction tx = s.beginTransaction();
                           s.save(depart);//保存一个部门对象
			s.save(emp);//保存员工对象
			tx.commit();//事务提交
		}finally{
			if(s!=null)s.close();
		}
		
		return null;
	}
         //按员工ID查询一个员工对象
	static Employee query(int emp_id){
		Session s = null;
		Employee emp = null;
		try{
			s = HibernateUtil.getSession();
			Transaction tx = s.beginTransaction();
			emp = (Employee)s.get(Employee.class, emp_id);
			Hibernate.initialize(emp.getDepart());//强制加载会话中的实例,
			tx.commit();
		}finally{
			if(s!=null)s.close();
		}
		
		return emp;
	}
}


分享到:
评论

相关推荐

    Hibernate3.2学习笔记

    《Hibernate3.2学习笔记详解》 在Java开发中,ORM(Object-Relational Mapping)框架如Hibernate极大地简化了数据库操作,使得开发者可以更加专注于业务逻辑而不是底层的数据存取。本篇学习笔记将深入探讨Hibernate...

    Hibernate3.2详细教程及课程笔记

    《Hibernate 3.2 详细教程及课程笔记》是一份专为Java开发者设计的深入学习指南,旨在帮助已经具备Java基础知识的学习者熟练掌握Hibernate框架,并能够将其应用到实际的项目开发中。本教程覆盖了从基础概念到高级...

    hibernate3.2学习笔记

    ### Hibernate 3.2 学习笔记:一对一主键关联详解 #### 一、一对一主键关联概述 ...此外,Hibernate 还提供了多种其他类型的关联关系,如一对多、多对多等,这些将在后续的学习笔记中进一步介绍。

    Java相关课程系列笔记之十四Hibernate学习笔记

    【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。本笔记将详细阐述Hibernate的核心概念、使用方法和特性。 一、...

    Java EE 相关资料(Struts中文手册、Struts API、Hibernate 学习笔记、Hibernate API文档)

    虽然版本较旧,但依然能为初学者提供基础的理解,包括实体管理和事务处理、缓存策略、多对一、一对多、一对一、多对多的关系映射等。 通过这些资料,开发者不仅可以深入学习Java EE中的两个重要组件——Struts和...

    达内HIBERNATE学习笔记

    根据提供的信息,我们可以总结出以下关于达内HIBERNATE学习笔记的重要知识点: ### 第一章:Hibernate入门 #### 1.1 学习目标 - 理解Hibernate的基本概念。 - 掌握如何使用Hibernate进行开发。 #### 1.2 对象持久...

    hibernate学习资料大合集

    hibernate笔记.pdf 和 Hibernate学习笔记.pdf** 这两份笔记可能由经验丰富的开发者整理,包含他们在学习和使用Hibernate过程中积累的实用技巧和常见问题解决方案。这些个人经验往往能提供独特的视角和实战经验,...

    hibernate学习笔记

    本文主要围绕Hibernate 3.2的学习笔记,涵盖其基本概念、配置、映射机制以及核心开发接口。 一、O/R Mapping简介与优点 1. O/R Mapping(对象关系映射)是为了解决面向对象编程与关系型数据库之间的差异,通过在...

    Hibernate学习笔记(1)

    总结,本篇笔记主要介绍了Hibernate的基本使用,包括环境配置、项目构建、DAO设计以及具体的数据库操作实现,提供了从创建对象到持久化到数据库的完整流程。通过这种方式,开发者可以更加专注于业务逻辑,而不用过于...

    Hibernate学习笔记

    ### Hibernate学习笔记知识点详解 #### 一、在Eclipse中配置Hibernate环境 ##### 1. 配置Classpath Variables 为了在Eclipse中正确配置Hibernate,首先需要设置Classpath Variables来指向Hibernate安装路径下的...

    Java相关课程系列笔记之十四Hibernate学习笔记.doc

    【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,主要用于简化Java应用程序对数据库的访问。它提供了一种在Java对象和数据库记录之间进行映射的机制,使得开发者...

    2023年Java相关课程系列笔记之十四Hibernate学习笔记.doc

    在本篇“2023年Java相关课程系列笔记之十四Hibernate学习笔记”中,我们将深入探讨Java开发中常用的持久化框架——Hibernate。这个框架由梁建全老师主讲,旨在帮助开发者更高效、便捷地进行数据库操作,弥补JDBC在...

    Hibernate_PDF_超好

    再者,"Hibernate笔记.pdf"可能是一位资深开发者或讲师整理的个人学习笔记,通常会包含一些实践经验和技巧。这类笔记往往能提供一些官方文档中未提及的实用小贴士,如常见错误的解决方案、最佳实践以及一些性能调优...

    学习hibernate时记的笔记

    以下是对Hibernate的学习笔记: ### 1. Hibernate概述 Hibernate是由Jboss组织开发的一个开源项目,它允许Java开发者将数据库操作转换为对Java对象的操作,减少了大量SQL的编写工作。Hibernate支持多种数据库,...

    hibenate学习笔记

    通过以上步骤和概念的理解,你可以开始进一步学习Hibernate的高级特性,例如一对多、多对一、多对多的关系映射,以及如何使用Criteria或HQL进行复杂查询。随着经验的积累,你会发现Hibernate极大地简化了Java与...

    JPA学习笔记

    【JPA学习笔记】 JPA(Java Persistence API)是Java平台上的一个ORM(Object-Relational Mapping)规范,它提供了一种将Java对象与数据库表进行映射的机制,简化了数据库操作。JPA允许开发者使用面向对象的方式...

Global site tag (gtag.js) - Google Analytics