一.Hibernate的全局配置文件详解
1. hibernate-configuration元素
hibernate-configuration节点是全局配置文件的根节点用来定位映射文档的位置。
2.session-factory元素
session-factory节点对应着SessionFactory对象也就是说在session-factory节点配置的属性都是对应着SessionFactory对象的属性,当Hibernate扫描调用了Configuration对象加载配置文件时Configuration对象会读取这些配置,创建一个SessionFactory对象。
3.session-factory元素下的必要配置
1.数据库连接配:
<!-- 数据库驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 数据库地址 -->
<property name="hibernate.connection.url">jdbc:mysql:///hibernatetest</property>
<!-- 数据库用户名 -->
<property name="hibernate.connection.username">root</property>
<!-- 数据库密码 -->
<property name="hibernate.connection.password">a131421a</property>
<!-- 设置SQL方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
2.控制台打印信息配置:
<!-- 将所有生成的SQL打印到控制台 -->
<property name="hibernate.show_sql">true</property>
<!-- 在日志和控制台打印格式化后的SQL -->
<property name="hibernate.format_sql">true</property>
3.Hibernate表操作的配置:
create 自动建表.每次框架运行都会创建新的表.以前表将会被覆盖,表数据会丢失.(开发环境中测试使用)
create-drop 自动建表.每次框架运行结束都会将所有表删除.(开发环境中测试使用)
update(推荐使用) 自动生成表.如果已经存在不会再生成.如果表有变动.自动更新表(不会删除任何数据).
validate 校验.不自动生成表.每次启动会校验数据库中表是否正确.校验失败.
<property name="hibernate.hbm2ddl.auto">update</property>
4.引用ORM配置文件:
<mapping resource="com/lin/pojo/Person.hbm.xml"/>
二.Hibernate的ORM配置文件详解
1.hibernate-mapping元素
hibernate-mapping元素是ORM配置文件的根元素
2.class元素
class元素配置实体与表的关系
3.class元素下的id元素
id元素:配置主键映射的属性
name属性:对应实体类的属性名
column属性(可选):填写表中对应实体属性的列名。默认值:列名会默认使用属性名
type属性(可选):填写列的数据类型,hibernate会自动检查实体的属性类型. 每个类型有三种填法:java类型||hibernate类型||数据库类型
not-null属性(可选):配置该属性是否不能为空,默认值:false
length属性(可选):配置数据库中列的长度,默认值:使用数据库类型的最大长度
id元素下的generator元素:主键生成策略,就是每条记录录入时,主键的生成规则
identity:主键自增,由数据库来维护主键值,录入时不需要指定主键
sequence:Oracle中的主键生成策略
increment:主键自增,由hibernate来维护,每次插入前都会查询表中主键的最大值然后+1来作为主键的最大值
hilo:高低位算法,主键自增,由Hibernate来维护
native:hilo、sequence、 identity方式,自动三选一策略
uuid:产生随机字符串作为主键,主键类型必须为varchar类型
assigned:自然主键生成策略,Hibernate不会管理主键值,由开发人员自己录入
4.class元素下的property元素
property元素:建立实体类其他属性与表中字段的关系
name属性:填写属性名
column属性(可选):填写表中对应实体属性的列名。默认值:列名会默认使用属性名
type属性(可选):填写列的数据类型,hibernate会自动检查实体的属性类型.每个类型有三种填法:java类型||hibernate类型||数据库类型
not-null属性(可选):配置该属性是否不能为空,默认值:false
length属性(可选):配置数据库中列的长度,默认值:使用数据库类型的最大长度
5.ORM配置文件
<?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="com.lin.pojo.Person" table="person">
<id name="id" column="id">
<generator class="native"></generator>
</id>
<property name="name" column="name"></property>
<property name="age" column="age"></property>
<property name="birthday" column="birthday"></property>
</class>
</hibernate-mapping>