Hibernate 开发指南

 准备工作

1. 下载Ant软件包,解压缩(如C:/ant/)。并将其bin目录(如c:/ant/bin)添加到系统
PATH中。
 
2. 下载Hibernate、Hibernate-Extension和Middlegen-Hibernate软件包的最新版本。
  http://prdownloads.sourceforge.net/hibernate/

构建Hibernate基础代码

1. POJO
POJO在Hibernate语义中理解为数据库表所对应的Domain Object。这里的POJO
就是所谓的“Plain Ordinary Java Object”,字面上来讲就是无格式普通Java 对象,简
单的可以理解为一个不包含逻辑代码的值对象(Value Object 简称VO)。
一个典型的POJO:

public class TUser implements Serializable {
 
private String name;
 
    public User(String name) {
        this.name = name;
    }
 
    /** default constructor */
    public User() {
    }
 
    public String getName() {
        return this.name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
}

2. Hibernate 映射文件
Hibernate从本质上来讲是一种“对象-关系型数据映射”(Object Relational
Mapping 简称ORM)。前面的POJO在这里体现的就是ORM中Object层的语义,
而映射(Mapping)文件则是将对象(Object)与关系型数据(Relational)相关联的纽带,在Hibernate中,映射文件通常以“.hbm.xml”作为后缀。

由数据库产生基础代码

通过Hibernate官方提供的MiddleGen for Hibernate 和Hibernate_Extension工具包,我
们可以很方便的根据现有数据库,导出数据库表结构,生成ORM和POJO。

如这里我们用的是mysql数据库,对应的就是mysql.xml文件。

<property name="database.script.file" 
value="${src.dir}/sql/${name}-mysql.sql"/>
 
<property name="database.driver.file"
value="${lib.dir}/mysql.jar"/>
 
<property name="database.driver.classpath"
value="${database.driver.file}"/>
 
<property name="database.driver"
value="org.gjt.mm.mysql.Driver"/>
 
<property name="database.url"
value="jdbc:mysql://localhost/sample"/>
 
<property name="database.userid"
value="user"/>

<property name="database.password"       
value="mypass"/>
 
<property name="database.schema"          
value=""/>
 
<property name="database.catalog"        
value=""/>
 
<property name="jboss.datasource.mapping"
value="mySQL"/>

Key Generator 
主键产生器
可选项说明:
1) Assigned 主键由外部程序负责生成,无需Hibernate参与。

2) hilo
通过hi/lo算法实现的主键生成机制,需要额外的数据库表保存主
键生成历史状态。

3) seqhilo
与hilo类似,通过hi/lo算法实现的主键生成机制,只是主键历史
状态保存在Sequence中,适用于支持Sequence的数据库,如Oracle。

4) increment
主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持
一个变量,以保存着当前的最大值,之后每次需要生成主键的时候
将此值加1作为主键。
这种方式可能产生的问题是:如果当前有多个实例访问同一个数据
库,那么由于各个实例各自维护主键状态,不同实例可能生成同样
的主键,从而造成主键重复异常。因此,如果同一数据库有多个实
例访问,此方式必须避免使用。

5) identity
采用数据库提供的主键生成机制。如DB2、SQL Server、MySQL
中的主键生成机制。
 6) sequence
采用数据库提供的sequence机制生成主键。如Oralce中的
Sequence。
 7) native
由Hibernate根据底层数据库自行判断采用identity、hilo、sequence
其中一种作为主键生成方式。
 8) uuid.hex
由Hibernate基于128位唯一值产生算法生成16进制数值(编码后
以长度32的字符串表示)作为主键。
 9) uuid.string
与uuid.hex类似,只是生成的主键未进行编码(长度16)。在某些
数据库中可能出现问题(如PostgreSQL)。
 10) foreign
使用外部表的字段作为主键。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值