hibernate环境配置

hibernate介绍

Hibernate是轻量级JavaEE应用的持久层框架,它用于实现DAO,它是一个关系型数据库ORM框架。

用于实现DAO:使用hibernate实现数据访问层。

ORM框架:Object Relational Mapping 对象关系映射

Object:对象,java对象

Relational:关系,关系型数据库中二维表。

Mapping:映射,通过操作java对象去操作数据库。

java类-------------->表
java对象----------->表中记录
java对象属性------->表中字段
hibernate执行流程
在这里插入图片描述
1、配置文件
hbm.xml(映射文件,建立对象和表的映射关系) 一个表对应一个hbm.xml
.java(domain,java对象,pojo):定义属性、getter/setter方法
一个表定义一个java类(pojo)

hibernate.cfg.xml(hibnernate主配置文件),
只需要定义一个主配置文件,名称不固定,hibernate默认使用"hibenrate.cfg.xml"

2、通过configuration加载配置文件,准备hibernate的运行环境

3、创建sessionFactory会话工厂,用于创建会话

4、通过sessionFactory创建session会话,session中包括一个connection数据库连接,通过session向数据库发出sql语句。

5、对增、删、改操作,需要开启事务,通过transaction对象提交或回滚事务。

6、对查询操作,不需要开启事务,通过query对象构造查询条件查询数据库

7、释放资源, session用完要手动close关闭,sessionFactory在应用程序结束自动关闭。

创建映射文件

一张表对应一个hbm.xml和一个pojo(也就是实体类)。
编写hbm.xml,配置dtd约束
在这里插入图片描述

CstCustomer实体类
在这里插入图片描述

然后实体类的配置文件

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- 配置表和类的映射关系 -->
<hibernate-mapping >
	<!-- 将表和类对应起来
	name:类名,写类的全限定名 (必须配置)
	table:表名(必须配置)
	catalog:使用mysql配置数据库名,可以不用配置
	schema:使用oracle时候配置用户名
	
	 -->
	<class name="com.zking.crm.domain.CstCustomer" table="cst_customer" >
	<!-- 配置二级缓存     类级别的缓存  -->
	<cache usage="read-write"/>
		<!-- 主键映射 
		name:表中的主键对应的属性
		type:属性的类型
		-->
		<id name="custId" type="java.lang.Long">
			<!-- 对应表中主键字段 -->
			<column name="cust_id"></column>
			<!-- 主键生成策略 
			identity:自增主键生成策略
			还有其它策略:uuid(唯一串),assgiend(手动指定)、sequence(用于oracle中的序列生成主键)
			-->
			<generator class="identity"></generator>
		</id>
		
		<!-- 普通属性和字段的映射 
		name:类中的属性
		-->
		<property name="custName" type="string">
			<!-- 属性对应的字段 -->
			<column name="cust_name"></column>
		</property>
		
		 <property name="custUserId" type="java.lang.Long">
            <column name="cust_user_id"></column>
        </property>
        <property name="custCreateId" type="java.lang.Long">
            <column name="cust_create_id"></column>
        </property>
      
	<!--         <property name="custSource" type="string">
            <column name="cust_source" length="32"></column>
        </property> -->
        <property name="custIndustry" type="string">
            <column name="cust_industry" length="32"></column>
        </property>
        <property name="custLevel" type="string">
            <column name="cust_level" length="32"></column>
        </property>
        <property name="custLinkman" type="string">
            <column name="cust_linkman" length="64"></column>
        </property>
        <property name="custPhone" type="string">
            <column name="cust_phone" length="64"></column>
        </property>
        <property name="custMobile" type="string">
            <column name="cust_mobile" length="16"></column>
        </property>
        
        <!-- 一对多配置,一个客户对应多个联系人
        name:一方中set的属性名
        inverse="true":当前在客户中,关系维护由对方进行维护
         -->
        <set name="cstLinkmans" cascade="save-update,delete" inverse="true" fetch="select" lazy="true">
        	<key>
        		<!--多方中外键  -->
        		<column name="lkm_cust_id"></column>
        	</key>
        	<!-- class:指定多方类路径,即联系人类路径 -->
        	<one-to-many class="com.zking.crm.domain.CstLinkman"/>
        </set>
		
		<!-- 配置多对一 多个客户对应一个数据字典 -->
		<many-to-one name="baseDictByCustSource" class="com.zking.crm.domain.BaseDict" fetch="join">
			<column name="cust_source"></column>
		</many-to-one>
		
	</class>

</hibernate-mapping>

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>
	<!-- 配置hibernate运行的参数 -->

	<!-- 数据库方言,根据数据库选择 -->
	<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
	<!-- 数据库驱动 -->
	<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
	<!-- 数据库连接url -->
	<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/crm_hibernate</property>
	<!-- 数据库用户名和密码 -->
	<property name="hibernate.connection.username">root</property>
	<property name="hibernate.connection.password">123</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>


	<!-- 加载hbm.xml映射文件 -->
	<mapping resource="com/zking/crm/domain/CstCustomer.hbm.xml"/>	<!-- 客户基本信息配置文件 -->
	<mapping resource="com/zking/crm/domain/CstCustomerDetail.hbm.xml"/>	<!-- 客户详情信息配置文件 -->
	<mapping resource="com/zking/crm/domain/CstLinkman.hbm.xml"/>	<!-- 客户联系人信息配置文件 -->
	<mapping resource="com/zking/crm/domain/SysUser.hbm.xml"/>	<!-- 用户信息配置文件 -->
	<mapping resource="com/zking/crm/domain/SysRole.hbm.xml"/>	<!-- 角色信息配置文件 -->
	<mapping resource="com/zking/crm/domain/BaseDict.hbm.xml"/>	<!-- 数据字典配置文件 -->
	</session-factory>

	
	

</hibernate-configuration>

1、加载映射文件
2、配置hibernate运行的参数(属性)
1)数据库方言,决定了hibenrate发出哪个数据库认识的sql语句
2)数据库连接参数,可以配置成连接池

hibernate框架默认会加载classpath 下的hibernate.cft.xml
所需jar包
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值