hibernate的基本映射关系是指持久化类和映射文件之间的对应关系,它们之间的对应是实现ORM的基础,这样我们才可以通过操作持久化类对象来完成对数据库表中记录的增删改查操作。下面是持久化类和映射文件之间基本映射的具体说明。
public class User {
private Long id;
private String name;
private String email;
private String phone;
// 省略get/set方法
}
实体类的设计原则:
1)实现无参的默认的构造函数
2)提供一个标识属性
3)建议不要使用final修饰实体类(因为采用load延时加载数据的时候会继承实体类生成代理对象)
4)建议为实体类生成getter和setter方法(如果不使用,需要用属性field标识)
<hibernate-mapping packet="com.study.hibernate.model">
<!--
对象关系映射的开始:class元素表示类和数据库中表的映射关系。
name属性指定持久化类(或者接口)的Java全限定名;
table属性指定要映射的对应的数据库表名,如果省略,则以name作为表名
-->
<class name="User" table="user" catalog="hibernate">
<!--
持久化类对象的对象标识符(OID)和表的主键的映射关联:
name属性指定类中作为OID的属性名;
column属性表中主键字段的名字;如果省略,则以name作为字段名
-->
<id name="id" type="java.lang.Long">
<column name="id" />
<generator class="increment" />
</id>
<!--
普通属性的映射:
name属性:属性的名字,以小写字母开头;
column属性:对应的数据库字段名.如果省略,则以name作为字段名
type属性:指定Hibernate的映射类型、如果省略,则自动匹配
-->
<property name="name" type="string">
<column name="name" length="64" not-null="true" />
</property>
<property name="email" type="string">
<column name="email" length="64" not-null="true" />
</property>
<property name="phone" type="string">
<column name="phone" length="11" not-null="true" />
</property>
</class>
</hibernate-mapping>