hibernate.cfg.xml与*.hbm.xml

来源:互联网 发布:淘宝店自动回复短语 编辑:程序博客网 时间:2024/05/16 05:22

Hibernate配置文件包含了连接持久层与映射文件所需的基本信息。XML配置文件的默认名称为hibernate.cfg.xml。一般将其放到在项目的WEB-INF/classes路径下。

下面是一份典型的hibernate.cfg.xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>

<!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 name="">

 <!-- 配置数据库JDBC驱动-->

  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

  <!-- 配置数据库密码 -->

  <property name="hibernate.connection.password">cmsserverv6</property>

  <!-- 配置数据库连接URL -->

  <property name="hibernate.connection.url">jdbc:mysql://localhost:3321/1010gps</property>

  <!-- 配置数据库用户名-->

  <property name="hibernate.connection.username">root</property>

  <!-- 配置数据库方言 -->

  <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

  <!-- 配置JDBC内置连接池-->

  <property name="connection.pool_size">1</property>

  <!-- 输出运行时生成的SQL语句-->

  <property name="show_sql">true</property>

  <!-- 列出所有的映射文件-->

  <mapping class="org.hibernate.entity.User"/>

 </session-factory>

</hibernate-configuration>

 

 

4*.hbm.xml

实体类就是指普通的POJO,Hibernate并不知道那个实体类对应数据库的哪一张表,所以还需要配置一下,常用的方式就是*.hbm.xml文件[配置与@注解配置,这里介绍前者的详细属性:

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC

    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<!-- package声明pojo类所在的包,如果不写那么在classname属性里需要指定包名全路径

    schema指数据库模式,一个模式下可以有多张表

    --><hibernate-mappingpackage="com.wang.pojo">

    <!-- class指映射一下pojo,提供了公共的无参构造方法,通过反射产生对象

            属性用private修饰,并且生成get,set方法

            类不能用final来修饰,

            类需要指明标识  ,id属性

            name:表示pojo类名

            table:标识对应的数据库表名-->

    <classname="User" table="user">

    <!-- id:表示实体类的标识

        对应数据库表中的主键

        name:是指实体类的标识属性名

        column表示对应数据库表的列名,如果不写,则数据库表中列名和属性名一致

        length:标识数据库表中对应数据类型的长度,如果不写有默认长度

        type表示类型,如果不写hibernate可以找到对应的pojo类的属性的类型,可以写成int,string,java.lang.Integer等等-->

        <idname="id" column="id" >

            <!-- 主键生成策略

            native:根据底层数据库能力选择identity,sequence,或者hilo中的一个

            

            -->

            <generatorclass="native"></generator>

        </id>

        <!-- 实体类属性-->

<property name="vehiId" column="VehiID" type="java.lang.Integer"/>

<property name="devIdno" column="DevIDNO" type="string" length="40"/>

<property name="armTimeEnd" column="ArmTimeEnd" type="java.util.Date"/>

<property name="armType" column="ArmType" type="java.lang.Integer"/>  

    </class>

</hibernate-mapping>

 

· 主键映射

  实体类最好有一个主键列,并有get/set方法,主键最好使用可以为Null值的数据类型,比如Integer,Long,String,而不要使用int ,long,因为如果主键为null,表示这个实体类还没有保存到数据库,是一个临时状态(Transient),int,long等基本数据类型没有这个功能.

主键生成规则:也成为主键生成策略,用的最多的就是native(自增长策略),

native:自动方式,根据底层数据库自动选择.

· 普通属性映射

普通属性就是除主键外,java基本数据类型的属性,比如Integer(int),String,Date,注意Integer默认为null,int默认为0.

xml中使用<property />标签配置普通属性.type指定列类型,

日期属性配置,与普通属性配置相同,只是type中指定的是日期类型即可,取值可以有date,time,timestamp(简写方式)

阅读全文
0 0