hibernate 之 hibernate配置讲解,hibernate执行流程

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语句。并且执行该语句,返回的结果又被封装为指定的对象。

  

原文地址:https://www.cnblogs.com/forever2h/p/6734892.html