【引言】
Hibernate的一个重要的功能就是映射,它能够在对象模型和关系模型之间转换,是面向对象编程思想提倡使用的,这样开发人员就只需要关系对象模型中代码的编写。对象和关系数据库之间的映射通常是由XML文件来定义。
使用Hibernate编程时首先要连接数据库,所以首先要去查看xml中有关数据库连接的配置,根据文档的配置创建sessionFactory,再由sessionFactory创建一个session,最后由session统一将更改提交到数据库,这就是一整个操作。
【基本映射】
主要需要的映射对象有:要映射的实体、表示映射关系的映射文件、数据库连接信息的配置文件。
1、要映射的实体(*.java)
public class User implements java.io.Serializable{
private Long id;
private String loginName; // 登录名
private String password; // 密码
private String name; // 真实姓名
private String gender; // 性别
private String phoneNumber; // 电话号码
private String email; // 电子邮件
private String description; // 说明
以及每个属性的get/set方法。
2、映射文件
<?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="cn.itcast.oa.domain">
<class name="User" table="t_user">
<id name="id">
<generator class="native"/>
</id>
<property name="loginName" column="log_name"/>
<property name="password" />
<property name="name" />
<property name="gender" />
<property name="phoneNumber" />
<property name="email" />
<property name="description" />
</class>
</hibernate-mapping>
以上信息中,class标签中的name属性表示对应的实体类,table属性表示在数据库中对应的表名。
<id>标签必须配置在<class>标签的第一个位置。定义了该属性到数据库表主键字段的映射。<generator>标签表示主键的生成策略。
1、uuid:生成一个不会重复的id。
2、native: 根据底层数据库的能力选择identity,sequence或者hilo中的一个(数据库自增)。
3、assigned: 让程序在save()之前为对象分配一个表示符。这是<generator>元素没有指定时的默认生成策略。(如果是手动分配,则需要设置此配置)。
<property>标签用于映射普通属性到表字段。
1、name属性:属性的名字
2、column属性:对应到数据库字段名
……(其他的属性没写,大家自己查吧!)
3、数据库连接配置文件
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 1、数据库连接信息 -->
<!-- <property name="dialect">org.hibernate.dialect.Mysql5InnoDBDialect</property> -->
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<!-- 加载了jdbc.properties,所以不使用这个了
<property name="connection.driver_class">com.jdbc.mysql.Driver</property>
<property name="connection.url">jdbc:mysql://local:3306/itcastoa</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property> -->
<!-- 2、其他配置 -->
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">update</property>
<!-- 3、导入映射文件 -->
<mapping resource="cn/itcast/oa/domain/User.hbm.xml" />
</session-factory>
</hibernate-configuration>