hibernate自主学习,汤阳光hibernate视频例子。
这里有两个实体类Department部门(one),Employee员工(many)。
Department配置文件:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.bean">
<class name="Department" table="department">
<id name="id" column="id" type="int">
<generator class="native" />
</id>
<property name="name" type="string" column="name" length="30"></property>
<!--
employees属性,employees集合,表达本类与Employee集合的一对多关系,对应数据库表是employee
key子元素column:对方表中的外键列(many的一方)
class属性:关联的实体类(many的一方)
inverse属性:
默认为false:表示本方维护关联关系
true:表示本方放弃维护关联关系
-->
<set name="employees" table="employee" inverse="false">
<key column="departmentId"></key>
<one-to-many class="Employee" />
</set>
</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.bean">
<class name="Employee" table="employee">
<id name="id" column="id" type="int">
<generator class="native" />
</id>
<property name="name" type="string" column="name" length="30"></property>
<!--
class属性:指定关联的类
name属性:关联类在数据库中的命名
column:外键列名。必须与关联类中key子元素column相同。
-->
<many-to-one class="Department" name="department" column="departmentId"></many-to-one>
</class>
</hibernate-mapping>
解释:
department中定义了一个自动增长主键id,和一个string类型的部门name。
employee中也定义了一个主键id,string类型的员工name,以及一个外键departmentId,关联到department表中主键id,实现(部门—员工)的一对多关系。
department配置中,department是one的一方,所以配置文件属性为<one-to-many class="Employee"/>,一个部门对应多个员工。
employee,员工是many的一个方,所以是<many-to-one class="Department" />,多个员工对应一个部门。