案例:
员工对部门 (多对一) 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学习笔记详解》 在Java开发中,ORM(Object-Relational Mapping)框架如Hibernate极大地简化了数据库操作,使得开发者可以更加专注于业务逻辑而不是底层的数据存取。本篇学习笔记将深入探讨Hibernate...
《Hibernate 3.2 详细教程及课程笔记》是一份专为Java开发者设计的深入学习指南,旨在帮助已经具备Java基础知识的学习者熟练掌握Hibernate框架,并能够将其应用到实际的项目开发中。本教程覆盖了从基础概念到高级...
### Hibernate 3.2 学习笔记:一对一主键关联详解 #### 一、一对一主键关联概述 ...此外,Hibernate 还提供了多种其他类型的关联关系,如一对多、多对多等,这些将在后续的学习笔记中进一步介绍。
【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。本笔记将详细阐述Hibernate的核心概念、使用方法和特性。 一、...
虽然版本较旧,但依然能为初学者提供基础的理解,包括实体管理和事务处理、缓存策略、多对一、一对多、一对一、多对多的关系映射等。 通过这些资料,开发者不仅可以深入学习Java EE中的两个重要组件——Struts和...
根据提供的信息,我们可以总结出以下关于达内HIBERNATE学习笔记的重要知识点: ### 第一章:Hibernate入门 #### 1.1 学习目标 - 理解Hibernate的基本概念。 - 掌握如何使用Hibernate进行开发。 #### 1.2 对象持久...
hibernate笔记.pdf 和 Hibernate学习笔记.pdf** 这两份笔记可能由经验丰富的开发者整理,包含他们在学习和使用Hibernate过程中积累的实用技巧和常见问题解决方案。这些个人经验往往能提供独特的视角和实战经验,...
本文主要围绕Hibernate 3.2的学习笔记,涵盖其基本概念、配置、映射机制以及核心开发接口。 一、O/R Mapping简介与优点 1. O/R Mapping(对象关系映射)是为了解决面向对象编程与关系型数据库之间的差异,通过在...
总结,本篇笔记主要介绍了Hibernate的基本使用,包括环境配置、项目构建、DAO设计以及具体的数据库操作实现,提供了从创建对象到持久化到数据库的完整流程。通过这种方式,开发者可以更加专注于业务逻辑,而不用过于...
### Hibernate学习笔记知识点详解 #### 一、在Eclipse中配置Hibernate环境 ##### 1. 配置Classpath Variables 为了在Eclipse中正确配置Hibernate,首先需要设置Classpath Variables来指向Hibernate安装路径下的...
【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,主要用于简化Java应用程序对数据库的访问。它提供了一种在Java对象和数据库记录之间进行映射的机制,使得开发者...
在本篇“2023年Java相关课程系列笔记之十四Hibernate学习笔记”中,我们将深入探讨Java开发中常用的持久化框架——Hibernate。这个框架由梁建全老师主讲,旨在帮助开发者更高效、便捷地进行数据库操作,弥补JDBC在...
再者,"Hibernate笔记.pdf"可能是一位资深开发者或讲师整理的个人学习笔记,通常会包含一些实践经验和技巧。这类笔记往往能提供一些官方文档中未提及的实用小贴士,如常见错误的解决方案、最佳实践以及一些性能调优...
以下是对Hibernate的学习笔记: ### 1. Hibernate概述 Hibernate是由Jboss组织开发的一个开源项目,它允许Java开发者将数据库操作转换为对Java对象的操作,减少了大量SQL的编写工作。Hibernate支持多种数据库,...
通过以上步骤和概念的理解,你可以开始进一步学习Hibernate的高级特性,例如一对多、多对一、多对多的关系映射,以及如何使用Criteria或HQL进行复杂查询。随着经验的积累,你会发现Hibernate极大地简化了Java与...
【JPA学习笔记】 JPA(Java Persistence API)是Java平台上的一个ORM(Object-Relational Mapping)规范,它提供了一种将Java对象与数据库表进行映射的机制,简化了数据库操作。JPA允许开发者使用面向对象的方式...