hibernate 常用配置

  1. hibernate.cfg.xml 配置
<?xml version="1.0" encoding="UTF-8"?>
<!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="session">
		<!-- 1. 数据库相关 -->
		<property name="connection.username">root</property>
		<property name="connection.password">123</property>
		<property name="connection.url">jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8</property>
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<!-- 用来生成具体的sql语句 -->
		<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
		<!-- 配置c3p0 -->
		<!-- 连接池提供商 -->
		<property name="hibernate.connection.provider_class">org.hibernate.c3p0.internal.C3P0ConnectionProvider</property>
		<!-- 连接池中保留的最大连接数 -->
		<property name="hibernate.c3p0.max_size">10</property>
		<!-- 连接池中保留的最小连接数 -->
		<property name="hibernate.c3p0.min_size">1</property>
		<!-- 最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃 -->
		<property name="hibernate.c3p0.maxIdleTime">60</property>
		<!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒 -->
		<property name="hibernate.c3p0.timeout">5000</property>
		<!--为了方便调试是否在运行hibernate时在日志中输出sql语句 -->
		<property name="hibernate.show_sql">true</property>
		<!-- 是否对日志中输出的sql语句进行格式化 -->
		<property name="hibernate.format_sql">true</property>

		<!-- hbm2ddl.auto的4个值,如果不需要设置为none,建议正式环境设置为none validate 加载hibernate时,验证创建数据库表结构 
			create 每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因。 create-drop 加载hibernate时创建,退出是删除表结构 
			update 加载hibernate自动更新数据库结构 none 不执行检查 -->
		<property name="hibernate.hbm2ddl.auto">none</property>


		<!-- 事务隔离级别 -->
		<property name="hibernate.connection.isolation">4</property>
		<!-- 配置session绑定本地线程 -->
		<property name="hibernate.current_session_context_class">thread</property>

		<!-- 开启二级缓存 -->
		<property name="hibernate.cache.use_second_level_cache">true</property>
		<!-- 要指定缓存的供应商 -->
		<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory</property>
		<!-- 开启查询缓存 -->
		<property name="hibernate.cache.use_query_cache">true</property>

		<!-- 配置本地事务(No CurrentSessionContext configured!) -->
		<property name="hibernate.current_session_context_class">thread</property>

		<!-- 2. 调试相关 -->
		<property name="show_sql">true</property>
		<property name="format_sql">true</property>
		<!-- 3. 添加实体映射文件 -->
		<mapping resource="com/zking/entity/User.hbm.xml" />

	</session-factory>
</hibernate-configuration>
  1. hibernate的主键生成器:
    实现org.hibernate.id.IdentifierGenerator接口即可,并还可以实现 org.hibernate.id.Configurable接口来读取一些配置信息实现org.hibernate.id.IdentifierGenerator接口即可,并还可以实现 org.hibernate.id.Configurable接口来读取一些配置信息
    PersistentIdentifierGenerator.TABLE
    PersistentIdentifierGenerator.PK
<?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.zking.entity.User" table="t_hibernate_user">
		<id name="id" type="java.lang.Integer" column="id">
		<!-- class指的是表的主键对应的类 -->
			<!-- hibernate控制 -->
			<generator class="increment" />
			<!-- assigned:程序员自己控制表中对应的数据  数据类型不限、保存前必须赋值-->
			<!-- <generator class="assigned" /> -->
			
			<!-- 数据库控制  数字,无需赋值-->
			<!-- <generator class="identity" > 
				</generator>
			-->
			
			<!-- 数据库控制  数字,无需赋值-->
			<!-- <generator class="increment" > 
				</generator>
			-->
			<!-- 数据库控制 数字,无需赋值, 默认使hibernate_sequence这个序列,
      也可以通过sequence/sequence_name参数赋值  -->
			<!-- <generator class="sequence" > 
					设置sequence 属性名
					<param name="sequence_name">xxx</param>
				</generator>
			-->
			<!-- 自动根据数据库类型来控制主键 等于identity+sequence-->
			<!-- <generator class="native" > 
				</generator>
			-->
			<!-- 是由容器自动生成的一个32位的字符串,.hex代表的是十六进制)
      32位的字符串,无需赋值 -->
			<!-- <generator class="uuid" > 
				</generator>
			-->
			<!-- 自定义主键 -->
			<!-- <generator class="com.zking.id.IdCreate" > 
				</generator>
			-->
		</id>
	</class>
</hibernate-mapping>

3。 创建主键生成器类

package com.zking.id;

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.hibernate.HibernateException;
import org.hibernate.engine.spi.SessionImplementor;
import org.hibernate.id.IdentifierGenerator;

public class IdCreate implements IdentifierGenerator{
	
	/**
	 * 根据自己要求生成主键
	 */
	@Override
	public Serializable generate(SessionImplementor session, Object object) throws HibernateException {
		
		return "user_" + new SimpleDateFormat("yyyy-mm-dd hh-mm-ss").format(new Date());
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值