关联关系是在领域模型建模中经常使用到的一种关系,它是对现实世界中事物之间的关系最基本的表示。
关联关系指的是不同持久化类之间的一种结构关系,简单的说,关联关系描述某个对象在一段时间内一直知道另一个对象的存在。
关联关系包括多样性的关联和方向性的关联。
Hibernate 框架作为一种 ORM 技术的实现,对关联关系的映射实现得很完美,也易于理解和掌握,接下来分别介绍各类型关联关系的映射在 Hibernate 中是如何实现的。
1、单向多对一
多对一是最常见的,也是最容易理解的一种关联。比如:多个员工属性同一个部门。多个产品属于同一个类别,多个产品订单属于同一个账号。单向的多对一指的是多方可以访问一方,而一方不知道多方的存在。
Department.java(一方)
- package com.zxf.domain;
- /** 部门实体类 */
- public class Department {
- private Long id; //对象标识符(OID)
- private String name; //姓名
- private String description; //入职时间
- public Department(){} //无参数的构造方法
- //以下省略所有属性的getters和setters方法...
- }
package com.zxf.domain; /** 部门实体类 */ public class Department { private Long id; //对象标识符(OID) private String name; //姓名 private String description; //入职时间 public Department(){} //无参数的构造方法 //以下省略所有属性的getters和setters方法... }
Employee.java(多方)
- package com.qiujy.domain;
- import java.util.Date;
- /** 员工实体类 */
- public class Employee {
- private Long id; //对象标识符(OID)
- private String username; //姓名
- private Date joinTime; //入职时间
- private Department dept; //所属的部门
- public Employee(){} //无参数的构造方法
- //以下省略所有属性的getters和setters方法...
- }
package com.qiujy.domain; import java.util.Date; /** 员工实体类 */ public class Employee { private Long id; //对象标识符(OID) private String username; //姓名 private Date joinTime; //入职时间 private Department dept; //所属的部门 public Employee(){} //无参数的构造方法 //以下省略所有属性的getters和setters方法... }
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">
- <hibernate-mapping>
- <!-- 映射持久化类 -->
- <class name="com.zxf.domain.Department" table="department">
- <!-- 映射对象标识符 -->
- <id name="id" column="id" type="long">
- <generator class="native" />
- </id>
- <!-- 映射普通属性 -->
- <property name="name"/>
- <property name="description"/>
- </class>
- </hibernate-mapping>
<?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"> <hibernate-mapping> <!-- 映射持久化类 --> <class name="com.zxf.domain.Department" table="department"> <!-- 映射对象标识符 --> <id name="id" column="id" type="long"> <generator class="native" /> </id> <!-- 映射普通属性 --> <property name="name"/> <property name="description"/> </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">
- <hibernate-mapping>
- <!-- 映射持久化类 -->
- <class name="com.zxf.domain.Employee"
- table="employee">
- <!-- 映射对象标识符 -->
- <id name="id" column="id" type="long">
- <generator class="native" />
- </id>
- <!-- 映射普通属性 -->
- <property name="username" not-null="true" />
- <property name="joinTime"
- column="join_time" type="timestamp"/>
- <!-- 用many-to-one元素映射多对一关联
- name属性:指定关联的属性名
- column属性:指定此关联属性在数据库表中的外键字段名
- -->
- <many-to-one name="dept" column="dept_id"/>
- </class>
- </hibernate-mapping>
<?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"> <hibernate-mapping> <!-- 映射持久化类 --> <class name="com.zxf.domain.Employee" table="employee"> <!-- 映射对象标识符 --> <id name="id" column="id" type="long"> <generator class="native" /> </id> <!-- 映射普通属性 --> <property name="username" not-null="true" /> <property name="joinTime" column="join_time" type="timestamp"/> <!-- 用many-to-one元素映射多对一关联 name属性:指定关联的属性名 column属性:指定此关联属性在数据库表中的外键字段名 --> <many-to-one name="dept" column="dept_id"/> </class> </hibernate-mapping>
配置文件:hibernate.cfg.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!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="hibernate.dialect">
- org.hibernate.dialect.MySQLInnoDBDialect
- </property>
- <!-- 数据库连接参数设置 -->
- <property name="hibernate.connection.driver_class">
- com.mysql.jdbc.Driver
- </property>
- <property
- name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
- <property name="hibernate.connection.username">root</property>
- <property name="hibernate.connection.password">123</property>
- <!--实际操作数据库时是否显示SQL -->
- <!--
- <property name="hibernate.show_sql">true</property>
- <property name="hibernate.format_sql">true</property>
- -->
- <!--将数据库schema的DDL导出到数据库 -->
- <property name="hibernate.hbm2ddl.auto">update</property>
- <!-- 以下定义实体类与数据库表的映像文件 -->
- <mapping resource="com/zxf/domain/Department.hbm.xml" />
- <mapping resource="com/zxf/domain/Employee.hbm.xml" />
- </session-factory>
- </hibernate-configuration>
<?xml version="1.0" encoding="UTF-8"?> <!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="hibernate.dialect"> org.hibernate.dialect.MySQLInnoDBDialect </property> <!-- 数据库连接参数设置 --> <property name="hibernate.connection.driver_class"> com.mysql.jdbc.Driver </property> <property name="hibernate.connection.url">jdbc:mysql:///hibernate</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">123</property> <!--实际操作数据库时是否显示SQL --> <!-- <property name="hibernate.show_sql">true</property> <property name="hibernate.format_sql">true</property> --> <!--将数据库schema的DDL导出到数据库 --> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 以下定义实体类与数据库表的映像文件 --> <mapping resource="com/zxf/domain/Department.hbm.xml" /> <mapping resource="com/zxf/domain/Employee.hbm.xml" /> </session-factory> </hibernate-configuration>
2、单向一对多
举个示例来映射单向一对多关联关系。如:一个账号可以下多个订单。
Order.java(多方 配置文件比较简单)
- package com.zxf.domain;
- import java.util.Date;
- /** 订单实体类 */
- public class Order {
- private Long id; //对象标识符(OID)
- private String orderNo; //订单编号
- private Date createdTime; //下单时间
- public Order(){} //无参数的构造方法
- //以下省略所有属性的getters和setters方法...
- }
package com.zxf.domain; import java.util.Date; /** 订单实体类 */ public class Order { private Long id; //对象标识符(OID) private String orderNo; //订单编号 private Date createdTime; //下单时间 public Order(){} //无参数的构造方法 //以下省略所有属性的getters和setters方法... }
Account.java(一方 配置文件相对复杂)
- package com.zxf.domain;
- import java.util.Set;
- /** 账号实体类 */
- public class Account {
- private Long id; //对象标识符(OID)
- private String loginName; //姓名
- private Set<Order> orderSet; //所下订单的集合
- public Account(){} //无参数的构造方法
- //以下省略所有属性的getters和setters方法...
- }
package com.zxf.domain; import java.util.Set; /** 账号实体类 */ public class Account { private Long id; //对象标识符(OID) private String loginName; //姓名 private Set<Order> orderSet; //所下订单的集合 public Account(){} //无参数的构造方法 //以下省略所有属性的getters和setters方法... }
Order.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">
- <hibernate-mapping>
- <!-- 映射持久化类 -->
- <class name="com.zxf.domain.Order"
- table="orders">
- <!-- 映射对象标识符 -->
- <id name="id" column="id" type="long">
- <generator class="native" />
- </id>
- <!-- 映射普通属性 -->
- <property name="orderNo" column="order_no"/>
- <property name="createdTime"
- column="created_time" type="timestamp"/>
- </class>
- </hibernate-mapping>
<?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"> <hibernate-mapping> <!-- 映射持久化类 --> <class name="com.zxf.domain.Order" table="orders"> <!-- 映射对象标识符 --> <id name="id" column="id" type="long"> <generator class="native" /> </id> <!-- 映射普通属性 --> <property name="orderNo" column="order_no"/> <property name="createdTime" column="created_time" type="timestamp"/> </class> </hibernate-mapping>
Account.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">
- <hibernate-mapping>
- <!-- 映射持久化类 -->
- <class name="com.zxf.domain.Account" table="account">
- <!-- 映射对象标识符 -->
- <id name="id" column="id" type="long">
- <generator class="native" />
- </id>
- <!-- 映射普通属性 -->
- <property name="loginName" column="login_name"/>
- <!-- 映射集合属性,关联到多端的实体类 -->
- <set name="orderSet" cascade="save-update">
- <!-- 用key元素指定关联的外键列 -->
- <key column="account_id" />
- <!-- 用one-to-many元素关联到多端的实体类 -->
- <one-to-many class="com.zxf.domain.Order" />
- </set>
- </class>
- </hibernate-mapping>
<?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"> <hibernate-mapping> <!-- 映射持久化类 --> <class name="com.zxf.domain.Account" table="account"> <!-- 映射对象标识符 --> <id name="id" column="id" type="long"> <generator class="native" /> </id> <!-- 映射普通属性 --> <property name="loginName" column="login_name"/> <!-- 映射集合属性,关联到多端的实体类 --> <set name="orderSet" cascade="save-update"> <!-- 用key元素指定关联的外键列 --> <key column="account_id" /> <!-- 用one-to-many元素关联到多端的实体类 --> <one-to-many class="com.zxf.domain.Order" /> </set> </class> </hibernate-mapping>
配置文件:hibernate.cfg.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!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="hibernate.dialect">
- org.hibernate.dialect.MySQLInnoDBDialect
- </property>
- <!-- 数据库连接参数设置 -->
- <property name="hibernate.connection.driver_class">
- com.mysql.jdbc.Driver
- </property>
- <property
- name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
- <property name="hibernate.connection.username">root</property>
- <property name="hibernate.connection.password">123</property>
- <!--实际操作数据库时是否显示SQL -->
- <!--
- <property name="hibernate.show_sql">true</property>
- <property name="hibernate.format_sql">true</property>
- -->
- <!--将数据库schema的DDL导出到数据库 -->
- <property name="hibernate.hbm2ddl.auto">update</property>
- <!-- 以下定义实体类与数据库表的映像文件 -->
- <mapping resource="com/zxf/domain/Account.hbm.xml" />
- <mapping</st
发表评论
相关资源推荐
关联关系是在领域模型建模中经常使用到的一种关系,它是对现实世界中事物之间的关系最基本的表示。
关联关系指的是不同持久化类之间的一种结构关系,简单的说,关联关系描述某个对象在一段时间内一直知道另一个对象的存在。
关联关系包括多样性的关联和方向性的关联。
Hibernate 框架作为一种 ORM 技术的实现,对关联关系的映射实现得很完美,也易于理解和掌握,接下来分别介绍各类型关联关系的映射在 Hibernate 中是如何实现的。
1、单向多对一
多对一是最常见的,也是最容易理解的一种关联。比如:多个员工属性同一个部门。多个产品属于同一个类别,多个产品订单属于同一个账号。单向的多对一指的是多方可以访问一方,而一方不知道多方的存在。
Department.java(一方)
- package com.zxf.domain;
- /** 部门实体类 */
- public class Department {
- private Long id; //对象标识符(OID)
- private String name; //姓名
- private String description; //入职时间
- public Department(){} //无参数的构造方法
- //以下省略所有属性的getters和setters方法...
- }
package com.zxf.domain; /** 部门实体类 */ public class Department { private Long id; //对象标识符(OID) private String name; //姓名 private String description; //入职时间 public Department(){} //无参数的构造方法 //以下省略所有属性的getters和setters方法... }
Employee.java(多方)
- package com.qiujy.domain;
- import java.util.Date;
- /** 员工实体类 */
- public class Employee {
- private Long id; //对象标识符(OID)
- private String username; //姓名
- private Date joinTime; //入职时间
- private Department dept; //所属的部门
- public Employee(){} //无参数的构造方法
- //以下省略所有属性的getters和setters方法...
- }
package com.qiujy.domain; import java.util.Date; /** 员工实体类 */ public class Employee { private Long id; //对象标识符(OID) private String username; //姓名 private Date joinTime; //入职时间 private Department dept; //所属的部门 public Employee(){} //无参数的构造方法 //以下省略所有属性的getters和setters方法... }
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">
- <hibernate-mapping>
- <!-- 映射持久化类 -->
- <class name="com.zxf.domain.Department" table="department">
- <!-- 映射对象标识符 -->
- <id name="id" column="id" type="long">
- <generator class="native" />
- </id>
- <!-- 映射普通属性 -->
- <property name="name"/>
- <property name="description"/>
- </class>
- </hibernate-mapping>
<?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"> <hibernate-mapping> <!-- 映射持久化类 --> <class name="com.zxf.domain.Department" table="department"> <!-- 映射对象标识符 --> <id name="id" column="id" type="long"> <generator class="native" /> </id> <!-- 映射普通属性 --> <property name="name"/> <property name="description"/> </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">
- <hibernate-mapping>
- <!-- 映射持久化类 -->
- <class name="com.zxf.domain.Employee"
- table="employee">
- <!-- 映射对象标识符 -->
- <id name="id" column="id" type="long">
- <generator class="native" />
- </id>
- <!-- 映射普通属性 -->
- <property name="username" not-null="true" />
- <property name="joinTime"
- column="join_time" type="timestamp"/>
- <!-- 用many-to-one元素映射多对一关联
- name属性:指定关联的属性名
- column属性:指定此关联属性在数据库表中的外键字段名
- -->
- <many-to-one name="dept" column="dept_id"/>
- </class>
- </hibernate-mapping>
<?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"> <hibernate-mapping> <!-- 映射持久化类 --> <class name="com.zxf.domain.Employee" table="employee"> <!-- 映射对象标识符 --> <id name="id" column="id" type="long"> <generator class="native" /> </id> <!-- 映射普通属性 --> <property name="username" not-null="true" /> <property name="joinTime" column="join_time" type="timestamp"/> <!-- 用many-to-one元素映射多对一关联 name属性:指定关联的属性名 column属性:指定此关联属性在数据库表中的外键字段名 --> <many-to-one name="dept" column="dept_id"/> </class> </hibernate-mapping>
配置文件:hibernate.cfg.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!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="hibernate.dialect">
- org.hibernate.dialect.MySQLInnoDBDialect
- </property>
- <!-- 数据库连接参数设置 -->
- <property name="hibernate.connection.driver_class">
- com.mysql.jdbc.Driver
- </property>
- <property
- name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
- <property name="hibernate.connection.username">root</property>
- <property name="hibernate.connection.password">123</property>
- <!--实际操作数据库时是否显示SQL -->
- <!--
- <property name="hibernate.show_sql">true</property>
- <property name="hibernate.format_sql">true</property>
- -->
- <!--将数据库schema的DDL导出到数据库 -->
- <property name="hibernate.hbm2ddl.auto">update</property>
- <!-- 以下定义实体类与数据库表的映像文件 -->
- <mapping resource="com/zxf/domain/Department.hbm.xml" />
- <mapping resource="com/zxf/domain/Employee.hbm.xml" />
- </session-factory>
- </hibernate-configuration>
<?xml version="1.0" encoding="UTF-8"?> <!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="hibernate.dialect"> org.hibernate.dialect.MySQLInnoDBDialect </property> <!-- 数据库连接参数设置 --> <property name="hibernate.connection.driver_class"> com.mysql.jdbc.Driver </property> <property name="hibernate.connection.url">jdbc:mysql:///hibernate</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">123</property> <!--实际操作数据库时是否显示SQL --> <!-- <property name="hibernate.show_sql">true</property> <property name="hibernate.format_sql">true</property> --> <!--将数据库schema的DDL导出到数据库 --> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 以下定义实体类与数据库表的映像文件 --> <mapping resource="com/zxf/domain/Department.hbm.xml" /> <mapping resource="com/zxf/domain/Employee.hbm.xml" /> </session-factory> </hibernate-configuration>
2、单向一对多
举个示例来映射单向一对多关联关系。如:一个账号可以下多个订单。
Order.java(多方 配置文件比较简单)
- package com.zxf.domain;
- import java.util.Date;
- /** 订单实体类 */
- public class Order {
- private Long id; //对象标识符(OID)
- private String orderNo; //订单编号
- private Date createdTime; //下单时间
- public Order(){} //无参数的构造方法
- //以下省略所有属性的getters和setters方法...
- }
package com.zxf.domain; import java.util.Date; /** 订单实体类 */ public class Order { private Long id; //对象标识符(OID) private String orderNo; //订单编号 private Date createdTime; //下单时间 public Order(){} //无参数的构造方法 //以下省略所有属性的getters和setters方法... }
Account.java(一方 配置文件相对复杂)
- package com.zxf.domain;
- import java.util.Set;
- /** 账号实体类 */
- public class Account {
- private Long id; //对象标识符(OID)
- private String loginName; //姓名
- private Set<Order> orderSet; //所下订单的集合
- public Account(){} //无参数的构造方法
- //以下省略所有属性的getters和setters方法...
- }
package com.zxf.domain; import java.util.Set; /** 账号实体类 */ public class Account { private Long id; //对象标识符(OID) private String loginName; //姓名 private Set<Order> orderSet; //所下订单的集合 public Account(){} //无参数的构造方法 //以下省略所有属性的getters和setters方法... }
Order.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">
- <hibernate-mapping>
- <!-- 映射持久化类 -->
- <class name="com.zxf.domain.Order"
- table="orders">
- <!-- 映射对象标识符 -->
- <id name="id" column="id" type="long">
- <generator class="native" />
- </id>
- <!-- 映射普通属性 -->
- <property name="orderNo" column="order_no"/>
- <property name="createdTime"
- column="created_time" type="timestamp"/>
- </class>
- </hibernate-mapping>
<?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"> <hibernate-mapping> <!-- 映射持久化类 --> <class name="com.zxf.domain.Order" table="orders"> <!-- 映射对象标识符 --> <id name="id" column="id" type="long"> <generator class="native" /> </id> <!-- 映射普通属性 --> <property name="orderNo" column="order_no"/> <property name="createdTime" column="created_time" type="timestamp"/> </class> </hibernate-mapping>
Account.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">
- <hibernate-mapping>
- <!-- 映射持久化类 -->
- <class name="com.zxf.domain.Account" table="account">
- <!-- 映射对象标识符 -->
- <id name="id" column="id" type="long">
- <generator class="native" />
- </id>
- <!-- 映射普通属性 -->
- <property name="loginName" column="login_name"/>
- <!-- 映射集合属性,关联到多端的实体类 -->
- <set name="orderSet" cascade="save-update">
- <!-- 用key元素指定关联的外键列 -->
- <key column="account_id" />
- <!-- 用one-to-many元素关联到多端的实体类 -->
- <one-to-many class="com.zxf.domain.Order" />
- </set>
- </class>
- </hibernate-mapping>
<?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"> <hibernate-mapping> <!-- 映射持久化类 --> <class name="com.zxf.domain.Account" table="account"> <!-- 映射对象标识符 --> <id name="id" column="id" type="long"> <generator class="native" /> </id> <!-- 映射普通属性 --> <property name="loginName" column="login_name"/> <!-- 映射集合属性,关联到多端的实体类 --> <set name="orderSet" cascade="save-update"> <!-- 用key元素指定关联的外键列 --> <key column="account_id" /> <!-- 用one-to-many元素关联到多端的实体类 --> <one-to-many class="com.zxf.domain.Order" /> </set> </class> </hibernate-mapping>
配置文件:hibernate.cfg.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!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="hibernate.dialect">
- org.hibernate.dialect.MySQLInnoDBDialect
- </property>
- <!-- 数据库连接参数设置 -->
- <property name="hibernate.connection.driver_class">
- com.mysql.jdbc.Driver
- </property>
- <property
- name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
- <property name="hibernate.connection.username">root</property>
- <property name="hibernate.connection.password">123</property>
- <!--实际操作数据库时是否显示SQL -->
- <!--
- <property name="hibernate.show_sql">true</property>
- <property name="hibernate.format_sql">true</property>
- -->
- <!--将数据库schema的DDL导出到数据库 -->
- <property name="hibernate.hbm2ddl.auto">update</property>
- <!-- 以下定义实体类与数据库表的映像文件 -->
- <mapping resource="com/zxf/domain/Account.hbm.xml" />
- <mapping</st
评论