Hibernate(二):Hibernate的配置及其元素说明

来源:互联网 发布:淘宝官方怎么提成 编辑:程序博客网 时间:2024/06/16 00:09

一,Hibernate的配置文件:

1.   Hibernate通过读取默认的XML配置文hibernate.cfg.xml加载数据库的配置信息,该配置文件默认放在项目的classpath的根目录下

代码举例:

<?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.driver_class">com.mysql.jdbc.Driver</property><!-- 数据库连接的URL --><property name="connection.url">jdbc:mysql://localhost:3306/sys</property><!-- 数据库连接用户名 --><property name="connection.username">root</property><!-- 数据库连接密码 --><property name="connection.password"></property><!-- Hibernate方言 --><property name="dialect">org.hibernate.dialect.MySQLDialect</property><!-- 打印SQL语句 --><property name="show_sql">true</property><!-- 映射文件  --><mapping resource="com/mr/uer/user.hbm.xml"/> </session-factory> </hibernate-configuration>

2.<property>元素常用的配置属性:

属性说明属性说明 connection.driver_class连接数据库的驱动dialectl连接数据库使用的方言connection.urll连接数据库的URL地址show_sql  是否在控制台打印sql语句connection.username

connection.passwors连接数据库的用户名
连接数据库的密码format.sql

hbm2ddl.auto是否格式化sql语句

是否自动生成数据库表一般开发中会将show_sql设置为true,以便在控制台打印自动生成的sql语句,以方便程序的调试

二,编写持久化类

     1.持久化类是Hibernate操作的对象,也就是通过对象-关系映射ORM后数据库表所映射的实体类,用来描述数据库中表的结构信息,。持久化类中的属性应该与数据库表中的字段名相匹配

符合最基本的JavaBean的编程规范,不依赖于任何借口和继承任何类

2.持久化类有四条编程规则:

  • 实现一个默认的构造函数:默认的无参构造函数,以便Hibernate通过Constructor.newInstance()实例化持久类
  • 提供一个标识属性(可选):映射的是数据库表中的主键字段
  • 使用非final类(可选):如果使用了final类,Hibernate就不能童年过代理来延迟关联加载,这会影响开发人员的性能优化的选择
  • 为属性声明访问器(可选):持久化类的属性不能声明为public,最好以private的set和get方法对属性进行持久化
代码示例:
package com.mr.uer;public class User {    private Integer id;    private String name;    private String password;    public void setId(Integer id) {        this.id = id;    }    public void setName(String name) {        this.name = name;    }    public void setPassword(String password) {        this.password = password;    }    public Integer getId() {        return id;    }    public String getName() {        return name;    }    public String getPassword() {        return password;    }}


三,Hibernate映射

1.映射文件的基础

  • 对象和关系数据库之间的映射通常使用XML文档来实现。这个文档要被设计成易读,并且可以手工修改。
  •  映射文件的命名规则为*.hbm.xml
  •  映射文件是按照持久化类定义的,而不是数据表的定义

2.元素:

(1)<DOCTYPE>:   在所有的Hibernate的映射文件上必须有这个元素,用来获取DTD文件

(2)<hibernate-mapping>:是映射文件中其他元素的根元素。这个元素包含一些可选的属性。例如

  • shcema:该文件映射所在数据库的schema名称
  • package:一个包的前缀,如果在<class>中没有指定全限定的类名,就将使用<package>属性定义的包前缀作为包名

 (3)<class>元素:主要用于指定持久化类和映射的数据库表名。

            <class>元素的属性:

  •   name属性需要指定持久化类的全限定的类名;
  •    table属性就是持久化类所映射的数据库表名

   <class>元素包含元素:

  • <id>:用于持久化类的唯一标识与数据库表的主键字段的映射
  •  <property>:用于持久类的其他属性和数据库表中非主键字段的映射,配置属性如下表:

属性名称说明name持久化类属性的名称,以小写字母开头column数据库字段名type数据库字段类型length数据库字段定义的长度not-null该数据库字段是否可以为空。该属性为布尔变量unique盖数据库字段是否唯一,为布尔变量lazy是否延迟抓取,为布尔变量

    注意:如果在映射文件中没有配置colum属性和type属性,Hibernate会默认使用持久化类中属性名称和属性类型匹配数据表中的字段


代码示例:


三,主键策略

在映射文件的<class>元素下有一个<id>元素,<id》元素有一个子元素:<generator>,是一个Java类的名字,用来持久化类的实例生成唯一的标识映射数据库中的主键字段,在配置文件中通过设置<generator>元素的属性设置Hibernate的主键生成策略

属性名称说明increment           用于为Long,Short或者Int类型生成唯一标识,在集群下不适用identity由底层数据生成主键,前提是底层数据库支持自增字段类型sequence根据底层数据库的序列生成主键,前提是底层数据库支持序列hilo根据高/低算法,把特定表的字段作为高位值来源,默认情况下选择hibernate_unique_key的next_hi字段native根据底层数据库对自动生成标识符的的支持能力选择identity,sequece,hiloassigened           由程序负责主键的生成,持久化的类的唯一标识不能声明为private类型select通过数据库触发器生成主键foreign使用另一个相关联的对象的标识符,通常和<one-to-one>使用