- 浏览: 114506 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
guava:
$("#xx") xx是一个id 还有记得 ...
一 感觉js还是蛮重要的 所以静下心来学习 -
guava:
简单的做出来了 但是还是很不面向对象还有很多不足的地方要改进呢 ...
网上故障申报系统 类设计
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配置文件如下:
<?xml version='1.0' encoding='gb2312'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"[url]http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd[/url] ">
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"[url]http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd[/url] ">
<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>
<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/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"/>
<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>
</hibernate-configuration>
系列实例中所用到Session工厂是:
public class HibernateUtil {
private static final SessionFactory sessionFactory;
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);
}
}
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;
}
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();
}
}
}
Session s = (Session) session.get();
session.set(null);
if (s != null) {
s.close();
}
}
}
本文出自 中山大学新华学院论坛 ,转载请与作者联系!
发表评论
-
tomcat 安装 在windows
2010-08-20 10:36 710CATALINA_HOME=C:\work\tomcat- ... -
appfuse先pojo再dll_中山大学新华学院论坛
2010-04-05 13:16 1054一开始对这个问题很疑惑,觉得从dll开始开发很不oo,很不习惯 ... -
appfuse 使用教程一
2010-04-03 16:28 2158安装、配置好appfuse后,按一下步骤使用:1 创建项目 ... -
mvn appfuse:gen出现错误-中山大学新华学院论坛
2010-04-03 14:37 1239[INFO] Compiler errors : error ... -
appfuse常用命令_中山大学新华学院
2010-04-03 14:24 818mvn appfuse:gen-model 根据数据库 ... -
appfuse安装步骤_中山大学新华学院
2010-04-02 23:19 8191 .在https://appfuse.dev.java.ne ... -
spring结合hibernate注释(annotation)
2009-10-13 14:31 1580hibernate注释的配置参考了其他文章 发现要和spri ... -
struts2获取form值到pojo
2009-10-02 22:36 1080private LinkClass ggLinkClass ... -
Hibernate报错:could not resolve property 已解决
2009-10-02 22:06 1137原来是xdoclet把属性大写开头改为小写开头,所以出错了。 ... -
感叹一下 spring如此好用
2009-09-24 23:58 758ApplicationContext ac = ... -
struts2.1.6 annotation(注释)配置
2009-09-15 09:29 1571首先要加入struts2-convention-plugi ... -
解决了struts2 从form传值到实体类的问题
2009-09-13 00:58 1159搜索 struts2 ActionSupport/model- ... -
请问一个web项目web.xml的配置中<context-param>配置是起什么作用的
2009-09-12 20:36 11131.启动一个WEB项目的时候,容器(如:Tomcat)会去 ...
相关推荐
Hibernate作为Java领域中的一款著名对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据库事务。本速查表旨在提供关于Hibernate实体关联的实用信息,帮助开发者快速理解...
第7章 高级实体关联映射 7.1 单值的实体关联 7.1.1 共享的主键关联 7.1.2 一对一的外键关联 7.1.3 用联结表映射 7.2 多值的实体关联 7.2.1 一对多关联 7.2.2 多对多关联 7.2.3 把...
5. 关联映射:Hibernate支持一对一、一对多、多对一和多对多的关联映射,使得处理对象间的关联变得简单。 综上所述,Java培训-Hibernate课程旨在让开发者熟练掌握使用Hibernate进行数据库操作的技巧,通过理解并...
8. **关联映射**:Hibernate支持一对一、一对多、多对一和多对多等多种关联映射,通过@OneToOne、@OneToMany、@ManyToOne和@ManyToMany注解来实现。 9. **性能优化**:包括延迟加载(Lazy Loading)、集合分页、...
对于关联映射,Hibernate支持多种关系类型,如one-to-one、many-to-one、one-to-many、many-to-many。在实体类之间定义关联关系,并在映射文件中进行配置。例如,many-to-one关系中,many端的实体持有一个one端实体...
6.2 用已映射语句关联对象 101 6.2.1 复杂集合 101 6.2.2 延迟加载 104 6.2.3 避免N+1查询问题 105 6.3 继承 107 6.4 其他用途 109 6.4.1 使用语句类型和DDL 109 6.4.2 处理超大型数据集 109 6.5 小结 115 第7章 ...
问题 20:请解释 Java 中的 ORM(对象关系映射)技术,以及 Hibernate ORM 框架如何简化数据库操作。在实际开发中,ORM 的优缺点是什么? ORM 技术用于在对象和关系数据库之间建立桥梁,使得程序员可以使用面向对象...
- **对象关系映射**:将Java对象与数据库表进行映射。 - **懒加载**:只有当真正需要数据时才加载,减少内存消耗。 ### 补充☆SpringBoot - **自动化配置**:根据添加到项目中的依赖自动配置Spring应用。 - **启动...