1. hibernate.cfg.xml 配置文件:
<hibernate-configuration> <session-factory> <!-- hibernate核心配置文件 该配置文件中包含了3类配置信息: 数据库连接信息 通用配置信息 映射文件信息 --> <!-- 配置数据库连接信息 --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql:///test</property> <property name="connection.username">root</property> <property name="connection.password">1111</property> <!-- 通用配置信息 --> <!-- 配置方言 --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 打印sql语句 --> <property name="show_sql">true</property> <property name="format_sql">true</property> <!-- 映射文件信息 --> <mapping resource="cn/sxt/vo/User.hbm.xml"/> </session-factory> </hibernate-configuration>
2.xxx.hbm.xml映射文件:
<!-- 映射文件配置信息 该文件将类和数据库表进行关联映射 package 设置类所在的包 如果不设置该包的内容,那么在配置class的name需要将类的完全限定名配置上 如果配置了包名,在该映射文件下的所有类 都可以不写包名。 --> <hibernate-mapping package="cn.sxt.vo"> <!-- class 配置类和表的映射信息 name是类名(注意是否配置完全限定名) table 表名 如果不配置 默认和类名一致 --> <class name="User" table="t_user"> <!-- id配置主键: name是 类中的属性名 column数据库中的字段名 不写时和属性名一致 type是hibernate定义的类型,也可以使用java的类型,如果不写会自动匹配 --> <id name="id" column="id" type="int"> <!-- 主键生成策略: increment 用于为long, short或者int类型生成 唯一标识。只有在没有 其他进程往同一张表中插入数据时才能使用。 在集群下不要使用。 identity 对DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL 的内置标识字段提供支持。 返回的标识符是long, short 或者int类型的。 sequence 在DB2,PostgreSQL, Oracle, SAP DB, McKoi中使用序列 (sequence), 而在Interbase中使用生成器(generator)。返回的标识符是long, short或者 int类型的。 <generator class="sequence"> <param name="sequence">user_seq</param> </generator> uuid 用一个128-bit的UUID算法生成字符串类型的标识符, 这在一个网络中是唯一的 (使用了IP地址)。UUID被编码为一个32位16进制数字的字符串。 native 根据底层数据库的能力选择identity, sequence 或者hilo中的一个。 assigned 让应用程序在save()之前为对象分配一个标示符。这是 <generator> 元素没有指定时的默认生成策略。 foreign 使用另外一个相关联的对象的标识符。通常和<one-to-one>联合起来使用。 --> <generator class="native"></generator> </id> <!-- property映射普通类属性 name表示属性名 not-null设置是否为null --> <property name="name" column="name" type="java.lang.String"></property> <property name="age" column="age" type="int" ></property> </class> </hibernate-mapping>
3. hibernate执行过程:
Configuration 读取配置信息及映射信息。
SessionFactory 根据数据库的连接信息创建该对象,sessionFactory用于创建Session的工厂。
Session用于操作对象,实现对数据库的crud操作。根据session的不同方法,生成不同的sql语句。并且执行该语句,返回的结果又被封装为指定的对象。