hibernate的映射配置文件

来源:互联网 发布:js获取整数的最大数值 编辑:程序博客网 时间:2024/04/30 04:00

注:遇到一个属性记录一个属性,好记性不如烂笔头,以便以后查阅方便。采用的实体类 Customer

* 本文仅供参考查询作用,需要配置哪个属性查看对应属性的含义。有的属性有好几个选择值,还需比较之后选择适合项目的值来使用。


<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"      "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping>       <class name="it.bzc.pojo.Book" table="book" catalog="bzc"><id name="id" column="id" type="int"><generator class="identity"></generator></id><property name="name" column="name" type="string"></property><property name="price" column="price"></property></class></hibernate-mapping>

1.class
<class name="it.bzc.pojo.Book" table="book" catalog="bzc">
属性:  name > PO持久类的路径,注意后面没有.java,前面包名之间用“.”隔开,不是"/",与hibernate.cfg.xml里的mapping路径书写不一样

              table >  该持久类对应数据库中表格的名称,数据库中表示什么名,这里就是什么名

              catalog > 这里的bzc是数据库的名称,可根据实际功能替换数据库名称

注:在实际中,table属性可以不写,默认就是持久类的名称,这里是book;catalog也可以不写,因为在hibernate.cfg.xml中连接数据库的配置里已经配置过数据库了。

2.id    /    property

<id name="id" column="id" type="int">
<property name="name" column="name" type="string"></property>
id和property放在一起说下,二者都是持久类当中的字段,只不过id是主键,用于标识每条记录。读者可理解为都一样,只是id因为特殊,给了个特殊的名字;而其他字段都是property。

属性: name > 持久类中属性的名字

             column > 字面意思“栏”,数据库表中对应持久类属性的那一个字段,可以不写,默认和属性名一样

             type >  java里的属性值到表中字段的映射时数据类型要统一,就是通过这个控制。type有三种类型,拿字符类型举列子:

                               第一种:java类型     java.lang.String

                               第二种 :hibernate类型       string

                               第三种:sql类型        varchar(20)

注:sql类型的写法要和前面两种不一样,这里将

<property name="name" column="name" type="string"></property>
写成sql类型的给大家看一下:

<property name="name"><column name="name" sql-type="varchar(20)"></column> </property>

当然   type 属性也可以不设置,hibernate会自动进行类型转换。

3.generator

<generator class="identity"></generator>

不知道大家有没有注意到,id里还有这个属性的配置,在其他地方介绍这里时总是大篇幅,个人可以简单的理解为:1.这是一个主键策略,用来生成主键用;2.当我需要配置主键的时候,只需要拷贝这行代码,将里面的class值改变即可;3.参考下方主键策略,选择合适的主键策略即可。

     identity > mysql数据库用这个,因为mysql数据库支持自增这个功能,而这个单词的使用前提就是底层数据库支持自增。

    sequence > oracle数据库用这个,这个单词使用前提是底层数据库支持序列的使用,而oracle数据库就支持。

    increment > 这个和底层数据库无关了,是hibernate这个框架自身生成主键,每次递增1,纠结主键策略时可直接用这个。

    native > 这个和上面那个increment有异曲同工之处,同样不考虑底层数据库是什么,native会智能选择,如果底层数据库是mysql,nvtive 会自动替换成 identity ,当然oracle也同样的道理,只不过这一切不需要你来选择,hibernate帮助你克服你的强迫症。

* 暂时先介绍以上四个策略,能满足大部分需求。

0 0
原创粉丝点击