您的位置:首页 > 其它

Hibernate 实体关联关系映射----总结

2017-02-08 17:36 417 查看
Hibernate关联关系映射目录



├─单向关联

│  ├─ 
一对一外键单向关联
│  ├─ 
一对一主键单向关联

│  ├─ 
一对一连接表单向关联
│  ├─ 
一对多外键单向关联

│  ├─ 
一对多连接表单向关联

│  ├─ 
多对一外键单向关联

│  ├─ 
多对一连接表单向关联

│  └─ 
多对多单向关联

└─双向关联

    ├─ 
一对一外键双向关联

    ├─ 
一对一主键双向关联
    ├─ 
一对一连接表双向关联

    ├─ 
一对多外键双向关联

    ├─ 
一对多连接表双向关联

    └─ 
多对多双向关联

系列实例中所用的Hibernate配置文件如下:
 
<?xml version='1.0' encoding='gb2312'?>

<!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="connection.driver_class">com.mysql.jdbc.Driver</property>

        <!--指定连接数据库的url,hibernate连接的数据库名-->

        <property name="connection.url">jdbc:mysql://localhost:3306/hbstudy</property>

        <!--指定连接数据库的用户名-->

        <property name="connection.username">root</property>

        <!--指定连接数据库的用户密码-->

        <property name="connection.password">leizhimin</property>

        <!--指定连接池的大小-->

        <property name="connection.pool_size">5</property>

        <!--指定数据库的方言-->

        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

        <!--根据需要自动创建数据库,测试环境用-->

        <property name="hbm2ddl.auto">create</property>

        <!--在控制台显示执行的SQL语句-->

        <property name="show_sql">true</property>

        <!-- Enable Hibernate's automatic session context management -->

        <property name="current_session_context_class">thread</property>
        <!--映射文件列表-->

        <!--单向关联-->

        <mapping resource="com/lavasoft/dx/_n_1_fk/Addressn1fk.hbm.xml"/>

        <mapping resource="com/lavasoft/dx/_n_1_fk/Personn1fk.hbm.xml"/>

        <mapping resource="com/lavasoft/dx/_n_1_tab/Addressn1tab.hbm.xml"/>

        <mapping resource="com/lavasoft/dx/_n_1_tab/Personn1tab.hbm.xml"/>

        <mapping resource="com/lavasoft/dx/_1_1_fk/Address11fk.hbm.xml"/>

        <mapping resource="com/lavasoft/dx/_1_1_fk/Person11fk.hbm.xml"/>

        <mapping resource="com/lavasoft/dx/_1_1_tab/Address11tab.hbm.xml"/>

        <mapping resource="com/lavasoft/dx/_1_1_tab/Person11tab.hbm.xml"/>

        <mapping resource="com/lavasoft/dx/_1_1_pk/Address11pk.hbm.xml"/>

        <mapping resource="com/lavasoft/dx/_1_1_pk/Person11pk.hbm.xml"/>

        <mapping resource="com/lavasoft/dx/_1_n_fk/Address1nfk.hbm.xml"/>

        <mapping resource="com/lavasoft/dx/_1_n_fk/Person1nfk.hbm.xml"/>

        <mapping resource="com/lavasoft/dx/_1_n_tab/Address1ntab.hbm.xml"/>

        <mapping resource="com/lavasoft/dx/_1_n_tab/Person1ntab.hbm.xml"/>

        <mapping resource="com/lavasoft/dx/_n_n/Addressnn.hbm.xml"/>

        <mapping resource="com/lavasoft/dx/_n_n/Personnn.hbm.xml"/>
        <!--双向关联-->

        <mapping resource="com/lavasoft/sx/_1_n_fk/Address1nfk_sx.hbm.xml"/>

        <mapping resource="com/lavasoft/sx/_1_n_fk/Person1nfk_sx.hbm.xml"/>

        <mapping resource="com/lavasoft/sx/_1_n_tab/Address1ntab_sx.hbm.xml"/>

        <mapping resource="com/lavasoft/sx/_1_n_tab/Person1ntab_sx.hbm.xml"/>

        <mapping resource="com/lavasoft/sx/_n_n/Addressnn_sx.hbm.xml"/>

        <mapping resource="com/lavasoft/sx/_n_n/Personnn_sx.hbm.xml"/>

        <mapping resource="com/lavasoft/sx/_1_1_fk/Address11fk_sx.hbm.xml"/>

        <mapping resource="com/lavasoft/sx/_1_1_fk/Person11fk_sx.hbm.xml"/>

        <mapping resource="com/lavasoft/sx/_1_1_pk/Address11pk_sx.hbm.xml"/>

        <mapping resource="com/lavasoft/sx/_1_1_pk/Person11pk_sx.hbm.xml"/>

        <mapping resource="com/lavasoft/sx/_1_1_tab/Address11tab_sx.hbm.xml"/>

        <mapping resource="com/lavasoft/sx/_1_1_tab/Person11tab_sx.hbm.xml"/>
    </session-factory>

</hibernate-configuration>
 
系列实例中所用到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();

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: