java之hibernate之配置讲解

时间:2021-12-28 16:28:44

1.映射文件:User.hbm.xml

<!-- 
    package 指向class中所有类的包名,可以直接在指定类名时同时指定包名 -->
<hibernate-mapping package="cn.vincent.pojo">
    <!-- 
        class 表示类的映射
            name表示类名,如果hibernate-mapping中没有指定包名,在这里必须指定。
            table 指定类所对应的表名  如果不写 默认和类名一致
     -->
    <class name="User" table="t_user">
        <!-- id表示主键映射,在hibernate中,类所对应的表必须有主键
            name表示 类中对应数据库表中主键属性名  
            column 表示字段名称 不写和属性名一致
            type 表示属性的类型  如果不写 会自动根据类的属性信息查找
         -->
        <id name="id" column="id" type="int">
            <!-- 
                generator表示主键生成策略-为保存数据时指定其id
                increment 
                    用于为long, short或者int类型生成 唯一标识。
                    只有在没有其他进程往同一张表中插入数据时才能使用。 在集群下不要使用。 
                    select max(id) from table;
                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">sequence_name</param>
                 </generator> hilo 
                    使用一个高/低位算法高效的生成long, short 或者 int类型的标识符。给定一个表和
                    字段(默认分别是 hibernate_unique_key 和next_hi)作为高位值的来源。 
                    高/低位算法生成的标识符只在一个特定的数据库中是唯一的。
                uuid-开发中使用最多
                    用一个128-bit的UUID算法生成字符串类型的标识符, 这在一个网络中是唯一的(使用
                    了IP地址)。UUID被编码为一个32位16进制数字的字符串。 
                native 
                    根据底层数据库的能力选择identity, sequence 或者hilo中的一个。 
                assigned  手动指定id
                    让应用程序在save()之前为对象分配一个标示符。这是 <generator>元素
                    没有指定时的默认生成策略。 
                foreign 
                    使用另外一个相关联的对象的标识符。通常和<one-to-one>联合起来使用。 
             -->
             
            <generator class="native"></generator>
        </id>
        <!-- property 表示属性的映射 
                name 属性名 区分大小写,属性提供get/set方法
                column 字段名 不写时 默认和属性名一致
                type 属性的类型 可以不写
         -->
        <property name="name" column="name" type="java.lang.String"/>
        <property name="age" column="age" type="int"/>
    </class>
</hibernate-mapping>

2.配置文件讲解:hibernate.cfg.xml

<hibernate-configuration>
    <session-factory>
        <!-- 数据库连接信息 -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <!-- 默认 localhost:3306 -->
        <property name="connection.url">jdbc:mysql:///test</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>
        
        <!-- 通用配置 -->
        <!-- 方言:hibernate要支持多种数据库,根据不同数据库生成对应的sql语句
            告诉hibernate使用的什么数据库,以便生成对应数据库的sql
         -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <!-- 打印sql语句 -->
        <property name="show_sql">true</property>
        <!-- 格式化sql -->
        <property name="format_sql">true</property>
        <!-- 映射信息  注意映射文件存放的是文档路径 需要用/ -->
        <mapping resource="cn/vincent/pojo/User.hbm.xml"/>
    </session-factory>
</hibernate-configuration>