前面介绍了两篇文章 基于XML映射文件实现数据的CRUD和基于Annotation注解实现数据的CRUD,这一篇介绍 基于XML映射文件的Hibernate关联映射
话不多说,直接进入主题
<!-- hibernate映射配置文件 -->
hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!-- hibernate映射配置文件 -->
<hibernate-configuration>
<session-factory>
<!-- Hiberante 连接的基本信息 -->
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql:///digital</property>
<!-- Hiberante 方言 -->
<property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
<!-- 是否打印SQL -->
<property name="show_sql">true</property>
<!-- 关联 Hibernate 的映射文件 -->
<mapping resource="com/hibernate/entity/UserInfo.hbm.xml" />
<mapping resource="com/hibernate/entity/ProductInfo.hbm.xml" />
<mapping resource="com/hibernate/entity/Type.hbm.xml" />
</session-factory>
</hibernate-configuration>
ProductInfo.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="com.hibernate.entity">
<class name="ProductInfo" table="product_info" catalog="digital">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native"></generator>
</id>
<property name="code" type="java.lang.String">
<column name="code" length="16" not-null="true" />
</property>
<property name="name" type="java.lang.String">
<column name="name" length="255" not-null="true" />
</property>
<property name="intro" type="java.lang.String">
<column name="intro" not-null="true" />
</property>
<!-- 映射实体类ProductInfo到Type的单向多对一的关联 -->
<many-to-one name="type" column="tid" class="Type" lazy="false"/>
</class>
</hibernate-mapping>
Type.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="com.hibernate.entity">
<class name="Type" table="type" catalog="digital">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native"></generator>
</id>
<property name="name" type="java.lang.String">
<column name="name" length="20" not-null="true" />
</property>
<!-- 配置一对多关联映射 -->
<set name="pis" inverse="true" cascade="delete">
<key column="tid" />
<one-to-many class="ProductInfo" />
</set>
</class>
</hibernate-mapping>
UserInfo.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映射文件 -->
<hibernate-mapping package="com.hibernate.entity">
<class name="UserInfo" table="user_info" catalog="digital">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native"/>
</id>
<property name="userName" type="java.lang.String">
<column name="userName" length="16" not-null="true" />
</property>
<property name="password" type="java.lang.String">
<column name="password" length="16" not-null="true" />
</property>
<property name="regDate" type="java.util.Date">
<column name="regDate" not-null="true" />
</property>
</class>
</hibernate-mapping>
ProductInfo.java
package com.hibernate.entity;
import java.util.HashSet;
import java.util.Set;
public class ProductInfo {
// 产品基本信息(部分)
private int id; // 产品编号
private String code; // 产品编码
private String name; // 产品名称
private String intro; // 产品介绍
// 产品类型关联的属性
private Type type;
// 上述属性的getter和setter方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getIntro() {
return intro;
}
public void setIntro(String intro) {
this.intro = intro;
}
public Type getType() {
return type;
}
public void setType(Type type) {
this.type = type;
}
// 无参构造
public ProductInfo() {
}
// 有参构造
public ProductInfo(String code, String name, String intro) {
this.code = code;
this.name = name;
this.intro = intro;
}
public ProductInfo(String code, String name, String intro, Type type) {
super();
this.code = code;
this.name = name;
this.intro = intro;
this.type = type;
}
}
Type.java
package com.hibernate.entity;
import java.util.HashSet;
import java.util.Set;
public class Type {
private int id; // 产品类型编号
private String name; // 产品类型名称
//产品类型关联属性
private Set pis=new HashSet();
public Set getPis() {
return pis;
}
public void setPis(Set pis) {
this.pis = pis;
}
public int getId() {
return id;
}
// 上述属性的getter和setter方法
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// 有参构造
public Type(String name) {
this.name = name;
}
// 无参构造
public Type() {
}
}
UserInfo.java
package com.hibernate.entity;
import java.text.SimpleDateFormat;
import java.util.Date;
public class UserInfo {
private int id;
private String userName;
private String password;
private Date regDate;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getRegDate() {
return regDate;
}
public void setRegDate(Date regDate) {
this.regDate = regDate;
}
// 无参构造
public UserInfo() {
}
// 有参构造
public UserInfo(String userName, String password, Date regDate) {
this.userName = userName;
this.password = password;
this.regDate = regDate;
}
@Override
public String toString() {
return "UserInfo [id=" + id + ", userName=" + userName + ", password="
+ password + ", regDate="
+ new SimpleDateFormat("yyyy-MM-dd").format(regDate) + "]";
}
}
请大神指教。