【hibernate】配置文件与映射文件

        在学习hibernate的学习程中,我们要涉及到两个问题,我的程序如何连接到数据库、程序怎么知道我的一个POJO实例要保存到数据库的哪张表中。Hibernate中的两个配置文件就为我们解决这这两个问题,*.cfg.xml文件来设置我们连接的数据库,*.hbm.xml文件来设置我们的实体文件要和哪张表对应。

       下面就分别总结一下这两个配置文件的一些主要的配置方法。

 

        hibernate.cfg.xml与hibernate.properties 配置文件

        hibernate.properties的配置比较简单。Heibernate引用的包里提供了该配置文件,这个配置文件详细列出了hibernate配置文件的所有属性。每个配置段都给出了大致的注释,我们只需要取消注释就可以了。

       下面来说一说hibernate.cfg.xml的一些基本的配置,该配置文件定义了连接数据库的属性。

         

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
   
    <!-- 数据库连接的用户名 -->
    <property name="connection.username">root</property>    
    <!-- 数据库连接的密码 -->
    <property name="connection.password">123</property>
    <!-- 设置连接数据库的驱动	 -->
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <!--  连接数据库服务的地址 -->
    <property name="connection.url">jdbc:mysql:///hibernate?useUnicode=true&characterEncoding=UTF-8</property>
     <!-- 数据库方言 -->
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
   
    <!-- hibernate运行时是否将sql语句打印到控制台 -->
    <property name="show_sql">true</property>
    <!--   输出到控制台的语句是否要进行排版,方便阅读 -->
    <property name="format_sql">true</property>
    <!--   设置是否由java代码生成数据库脚本,进而生成数据库的表结构 -->
    <property name="hbm2ddl.auto">create</property>
   
   <!-- 是否在hibernate生成SQL语句中添加有助于调试的注释 -->
   <property name="use_sql_commments">false</property>
   
   <!--  添入映射文件 -->
   <mapping resource="hibernate/Students.hbm.xml"/>
   
   </session-factory>
</hibernate-configuration>
 
 


      hibernate映射文件

      

<span style="font-size:18px;"><?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2016-3-10 20:53:38 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
    <class name="hibernate.Students" table="STUDENTS">
        <id name="sid" type="int">
            <column name="SID" />
            <generator class="assigned" />
        </id>
        <property name="sname" type="java.lang.String">
            <column name="SNAME" />
        </property>
        <property name="gender" type="java.lang.String">
            <column name="GENDER" />
        </property>
        <property name="birthday" type="java.util.Date">
            <column name="BIRTHDAY" />
        </property>
        <property name="address" type="java.lang.String">
            <column name="ADDRESS" />
        </property>
    </class>
</hibernate-mapping></span><strong style="font-size:24px;">
</strong>

        Mapping下面可以有很多的<class..../>元素。其中 name表示了实体类。table代表了数据库中的表。

       

        映射主键

        通常情况下,hibernate建议为持久hibernate类定义一个标志属性,用于唯一的标志某个持久化实例,而标志属性需要映射到底层数据库表的主键。

        标志属性通过<id……>来指定,其中的name属性值就是持久化类标志属性名。现在的数据库建模理论都不推荐使用具有实际意义的物理主键,而是使用没有实际意义的逻辑主键。

        Hibernate为逻辑主键提供了主键生成器,用来负责生成数据库记录的主键,下面简单介绍几种主键生成器:

        Incerment:为long、short或者int类型主键生成唯一标识。

        Indentity:设置为自增长类型。返回值的标识属性是long、short、int类型。

        Native:根据底层的数据库的能力选择Identity、sequence或hilo中的一个。

        fetch_size batch_size

               Fetch_Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数。

               Batch_Size是设定对数据库进行批量删除,批量更新和批量插入的时候的批次大小。

       比如我们将fetch_size设置为10,那么当我们查询到五千条数据时,数据库只会返回10条数据,当这十条数据遍历完之后,继续取十条数据。同样batch_Size也是这样。当我们设置的值过大时会很消耗内存,但是操作次数会减少,当我们设置的值过小时内存占用小,但是操作次数会增加。所以这个值到底取多少也是因环境而异了。

 

      映射普通文件

      Hibernate使用<property…./>元素来映射普通睡醒,配置该元素是只需要指定一个name属性。也可以使用column属性来强制指定列名。列名默认与属性名相同。


       两个配置文件的设置还有很多这里面没有提及,但是这些属性已经足够我们来建立我们的hibernate文件。知识就是不断的重复,在学习的一开始我们就是要能够化繁为简。这样才能让我们每次学习都有新的收获,也不至于在学习的一开始就是去学习的兴趣


你可能感兴趣的:(Hibernate,J2EE,配置文件,jar包)