关联映射:将关联关系(在对象模型中就是一个或多个引用)映射到数据库中
关系属性:在内存中建立两个对象之间的关系
双向关系:在关系对象中都能找到对方
单项关系:只在关系的一方能找到另一方
实体类设计原则:
1、实现无参构造函数(Hibernate要调用)
2、提供一个标识(用于唯一标识该对象,映射数据库主键)
3、建议不用final修饰实体类(Hibernate实现延迟加载使用CGLIB代理时会继承实体类)
4、建议为实体类属性生成getter、setter方法(Hibernate默认属性访问器)
若实体类名或实体类中属性名与数据库关键字重复,将会出现问题;可考虑采用table属性和column属性对其进行重命名
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.app.model"
auto-import="true">
<!-- 实体类映射成表 -->
<class name="User" table="t_user"dynamic-insert="false"
dynamic-update="false">
<!-- 映射主键id -->
<idname="id" column="user_id"access="" length=""type="">
<!-- <generatorclass="increment" /> -->
<generatorclass="sequence">
<paramname="sequence">user_seq</param>
</generator>
</id>
<!-- 映射普通属性 -->
<!-- 普通属性(非集合、自定义类、数据等)映射成表字段 -->
<propertyname="name" column="user_name"length="30" type="string"
unique="false" not-null="true"access="field" insert="true"update="true" />
<propertyname="password" />
<propertyname="createTime" />
<propertyname="expireTime" type="date" />
<!-- 映射关系属性 -->
</class>
</hibernate-mapping>public class Company {
private Integer id;
private String name;
private Address address;
// setter、getter方法
// 在内存中建立对象关系
public void addRelation(Address address) {
this.address = address;
address.setCompany(this);
}
// 在内存中解除对象的关系
public void deleteRelation(Address address) {
this.address = null;
address.setCompany(null);
}
}
原文地址:http://blog.csdn.net/hekewangzi/article/details/41518813