Hibernate关联关系映射实例速查
 
        Hibernate的映射关系很多,也比较复杂,也很容易忘记。这个基本上占据了Hibernate学习的七成时间。熟悉这些映射模型,需要大量的实践才能掌握。下面是我对Hibernate关联关系映射的一个总结,放到blog上一是自己查看方便,二来也可以和更多Hibernate开发人员交流分享。希望各位多多留言哦:)。
        本文主要参考夏昕翻译的“Hibernate参考文档 V3.12”,也在附件中给出了。

        本文的模块较多,映射关系部分分为一下模块:
 
Hibernate关联关系映射目录

├─单向关联
│  ├─  一对一外键单向关联
│  ├─  一对一主键单向关联
│  ├─  一对一连接表单向关联
│  ├─  一对多外键单向关联
│  ├─  一对多连接表单向关联
│  ├─  多对一外键单向关联
│  ├─  多对一连接表单向关联
│  └─  多对多单向关联
└─双向关联
    ├─  一对一外键双向关联
    ├─  一对一主键双向关联
    ├─  一对一连接表双向关联
    ├─  一对多外键双向关联
    ├─  一对多连接表双向关联
    └─  多对多双向关联
 
 
本系列实例的开发环境:
 
Windows XP Professional 简体中文版
MySQL 5.0.45
Hibernate 3.12
Java SDK 1.5.06
IntelliJ IDEA 5.12
 
系列实例中所用的Hibernate配置文件如下:
 

        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        " [url]http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd[/url]">

   
       
        com.mysql.jdbc.Driver
       
        jdbc:mysql://localhost:3306/hbstudy
       
        root
       
        leizhimin
       
        5
       
        org.hibernate.dialect.MySQLDialect
       
        create
       
        true
       
        thread
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
   
 
系列实例中所用到Session工厂是:
public class HibernateUtil {
    private static final SessionFactory sessionFactory;
    static {
        try {
            // Create the SessionFactory from hibernate.cfg.xml
            sessionFactory = new Configuration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            System.err.println("初始化SessionFactory失败!" + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }
    public static final ThreadLocal session = new ThreadLocal();
    public static Session getCurrentSession() throws HibernateException {
        Session s = (Session) session.get();
        //当原Session为空或已关闭时,打开一个新的Session
        if (s == null || !s.isOpen()) {
            s = sessionFactory.openSession();
            session.set(s);
        }
        return s;
    }
    public static void closeSession() throws HibernateException {
        Session s = (Session) session.get();
        session.set(null);
        if (s != null) {
            s.close();
        }
    }
}