枚举:列举对象的可能项.
数据字典你更容易维护日常的东西。

Orm
我们研究的是关系数据库
多对一,外键处在多的一方。


对象的表达:多对一的对象设置
映射文件的设置
配置实体
BaseDict
private String dict_id;
private String dict_type_code;
private String dict_type_name;
private String dict_item_name;
private String dict_item_code;
private String dict_memo;
private Integer dict_sort;
private Character dict_enable;
BaseDict.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- 配置表与实体对象的关系 -->
<hibernate-mapping package="cn.itcast.domain">
<class name="BaseDict" table="base_dict">
<id name="dict_id">
<generator class="assigned"></generator>
<!-- class="assigned"说明主键是自己定的, 不是数据库生成的,用户注册的帐号一般就属于这种类型。 -->
</id>
<property name="dict_type_name" column="dict_type_name">
<!-- <column name="cust_name" sql-type="varchar" ></column> -->
</property>
<property name="dict_type_code"></property>
<property name="dict_item_name"></property>
<property name="dict_item_code"></property>
<property name="dict_memo"></property>
<property name="dict_sort"></property>
<property name="dict_enable"></property>
</class>
</hibernate-mapping>
Customer
private Long cust_id;
private String cust_name;
/*private String cust_source;
private String cust_industry;
private String cust_level;*/
//这三个是外键,一般情况下,多的一方有外键,所以这是多表
private String cust_linkman;
private String cust_phone;
private String cust_mobile;
//引用关联的数据字典的对象
private BaseDict cust_source;//客户来源
private BaseDict cust_industry;//客户行业
private BaseDict cust_level;//客户级别
Customer.hbn.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- 配置表与实体对象的关系 -->
<hibernate-mapping package="cn.itcast.domain" >
<class name="Customer" table="cst_customer" >
<id name="cust_id" >
<!-- generator:主键生成策略(明天讲) -->
<generator class="assigned"></generator>
</id>
<property name="cust_name" column="cust_name" >
<!-- <column name="cust_name" sql-type="varchar" ></column> -->
</property>
<!-- <property name="cust_source" column="cust_source" ></property>
<property name="cust_industry" column="cust_industry" ></property>
<property name="cust_level" column="cust_level" ></property> -->
<property name="cust_linkman" column="cust_linkman" ></property>
<property name="cust_phone" column="cust_phone" ></property>
<property name="cust_mobile" column="cust_mobile" ></property>
<!-- 配置表的多对一关系 -->
<many-to-one name="cust_source" column="cust_source" class="BaseDict"></many-to-one>
<many-to-one name="cust_industry" column="cust_industry" class="BaseDict"></many-to-one>
<many-to-one name="cust_level" column="cust_level" class="BaseDict"></many-to-one>
</class>
</hibernate-mapping>
需要注意的是在Customer的实体中把那几个外键注释掉了,并引入了BaseDict的那几个成员变量,所以需要在映射表对一的时候,把多表中的属性移除掉,把它们配置在多对一的关系当中。