数据库配置文件 *.cfg.xml
<!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="自定义名称">
<property name="hibernate.connection.driver_class">驱动类</property>
<property name="hibernate.connection.url">数据库地址</property>
<property name="hibernate.connection.username">用户名</property>
<property name="hibernate.connection.password">密码</property>
<property name="hibernate.dialect">方言</property>
<property name="show_sql">true/false</property> <!-- 打印sql语句 -->
<!--
hbm2ddl.auto
create:启动时先drop,再create
create-drop: 创建表,系统关闭前会将表drop掉
update:自动更新表结构
validate:验证表结构,如表结构不一致抛出异常
-->
<property name="hbm2ddl.auto">update</property>
<!--
配置使用getCurrentSession
如果是本地事务用thread
如果是全局事务用jta
-->
<property name="current_session_context_class">thread</property>
<mapping resource="包路径/../../*.hbm.xml" />
</session-factory>
</hibernate-configuration>
-------------------------------------------------------------------
映射配置文件 *.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="类名" table="表名">
<!-- 主键 -->
<id name="属性名" type="java数据类型">
<column name="字段名" />
<!-- 主键生成策略
assigned(常用) 由程序生成,在调用save方法前指定,没有指定会抛异常
hilo 主键字段必须整形,新建一张表做支持,默认表名hibernate_unique_key 默认字段next_hi,
字段也必须是整形,需要初始值,字段值不能修改,需要添加
<param name="table">添加的表名</param>
<param name="column">字段名</param>
<param name="max_lo">每条数据的间隔</param>
increment 自增长方式创建主键,底层数据库必须支持sequence,
不适合多进程更新数据库,不能用于集群环境
identity(常用) 根据底层数据库来自增长,使用与支持自增涨的数据库,主键字段自身需要支持自增涨
可移植性比较差,不支持oracle
sequence(常用) 需要底层数据库支持sequence,如oracle,需要添加
<param name="sequence">seq_name</param>
native(常用) 根据不同底层数据库选择identity,sequence,hilo其中之一的生成方法,便于移植
uuid.hex 使用128位UUID算法生成主键,保证同一网络环境下的主键唯一,字段需要字符串类型
-->
<generator class="" />
</id>
<property name="属性名" type="java数据类型">
<column name="字段名" />
</property>
</class>
</hibernate-mapping>
--------------------------------------------
Annotation注解方式
1. SessionFactory用AnnotationConfiguration创建
2. 配置文件中注册类
<mapping class="xx.xxx.xx" />
@Entity 在类体上加注解,使用javax.persistence.Entity
@id 在get方法上加注解,标识主键,使用javax.persistence.Id
@GeneratedValue(strategy=GenerationType.AUTO) 自动判断主键自增方式
hibernate提供主键生成方式
@GeneratedValue(generator="generatorName", strategy=GenerationType.AUTO)
@GenericGenerator(name="自定义name", strategy="[uuid,hilo...]")
<!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="自定义名称">
<property name="hibernate.connection.driver_class">驱动类</property>
<property name="hibernate.connection.url">数据库地址</property>
<property name="hibernate.connection.username">用户名</property>
<property name="hibernate.connection.password">密码</property>
<property name="hibernate.dialect">方言</property>
<property name="show_sql">true/false</property> <!-- 打印sql语句 -->
<!--
hbm2ddl.auto
create:启动时先drop,再create
create-drop: 创建表,系统关闭前会将表drop掉
update:自动更新表结构
validate:验证表结构,如表结构不一致抛出异常
-->
<property name="hbm2ddl.auto">update</property>
<!--
配置使用getCurrentSession
如果是本地事务用thread
如果是全局事务用jta
-->
<property name="current_session_context_class">thread</property>
<mapping resource="包路径/../../*.hbm.xml" />
</session-factory>
</hibernate-configuration>
-------------------------------------------------------------------
映射配置文件 *.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="类名" table="表名">
<!-- 主键 -->
<id name="属性名" type="java数据类型">
<column name="字段名" />
<!-- 主键生成策略
assigned(常用) 由程序生成,在调用save方法前指定,没有指定会抛异常
hilo 主键字段必须整形,新建一张表做支持,默认表名hibernate_unique_key 默认字段next_hi,
字段也必须是整形,需要初始值,字段值不能修改,需要添加
<param name="table">添加的表名</param>
<param name="column">字段名</param>
<param name="max_lo">每条数据的间隔</param>
increment 自增长方式创建主键,底层数据库必须支持sequence,
不适合多进程更新数据库,不能用于集群环境
identity(常用) 根据底层数据库来自增长,使用与支持自增涨的数据库,主键字段自身需要支持自增涨
可移植性比较差,不支持oracle
sequence(常用) 需要底层数据库支持sequence,如oracle,需要添加
<param name="sequence">seq_name</param>
native(常用) 根据不同底层数据库选择identity,sequence,hilo其中之一的生成方法,便于移植
uuid.hex 使用128位UUID算法生成主键,保证同一网络环境下的主键唯一,字段需要字符串类型
-->
<generator class="" />
</id>
<property name="属性名" type="java数据类型">
<column name="字段名" />
</property>
</class>
</hibernate-mapping>
--------------------------------------------
Annotation注解方式
1. SessionFactory用AnnotationConfiguration创建
2. 配置文件中注册类
<mapping class="xx.xxx.xx" />
@Entity 在类体上加注解,使用javax.persistence.Entity
@id 在get方法上加注解,标识主键,使用javax.persistence.Id
@GeneratedValue(strategy=GenerationType.AUTO) 自动判断主键自增方式
hibernate提供主键生成方式
@GeneratedValue(generator="generatorName", strategy=GenerationType.AUTO)
@GenericGenerator(name="自定义name", strategy="[uuid,hilo...]")