Hibernate配置

对Hibernate框架的学习

  • Hibernate 的执行流程
    1、配置文件 (hbm.xml 映射文件,建立对象和表的关系映射;.java 对象;.hibernate.cfg.xml(Hibernate的主配置文件))
    2、通过Configuration加载配置文件,准备hibernate的运行环境
    3、创建SessionFactory创建会话工厂,用于创建session
    4、通过sessionFactory创建session会话 通过session发出sql语句
    5、增删改需要开启事物,通过transaction提交或者回滚
    6、查询操作,不需要开启事物,通过query对象构造查询条件查询
    7、释放资源

  • 在hbm.xml 文件下配置:

// hbm.xml的配置  先进行配置Hibernate的dtd约束
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-/Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernatre.org/dtd/hibernate-mapping-3.0.dtd">
<!--配置表和类的映射关系-->
<hibernate-mappin>
	<class name="类名" table="表名">
		<!--配置主键的映射-->
		<id name="类中的属性名" type="属性的类型">
			<column name="数据表的主键名"></column>
			<!-- identity自增;uuid(唯一字符串);assgiend(手动指定)-->
			<generator class="identity"></generator>
		</id>
		<!--普通的属性和表的映射-->
		<property name="类的属性名" type="string(Hibernatet提供的类型,不写的话为字符串)">
			<column name="表的字段的名称" length="长度"></column>
		</property>
		。
		。
		。
		<!--使用工具去生成这些对应的关系-->
	</class>
</hibernate-mapping/>
// 配置主配置文件 hibernate.cfg.xml
// hbm.xml的配置  先进行配置Hibernate的dtd约束
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-/Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernatre.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-configuration>
<session_factory>
<!--配置hibernate的运行参数-->
	<!--数据库方言,根据选择的数据库进行配置-->
	<property name="hibernat.dialect">org.hibernate.dialect.MySQL5Dialect</property>
	<!--数据库连接url-->
	<property name="hibernate.connection.url"> jdbc:mysql://localhost:3306/text_hibernate</property>
	<!--加载数据库的名称和密码-->
	<property name="hobernate.connection.username">root</property>
	<property name="hibernate.connection.password">123</property>
	<!--是否允许输出sql语句-->
	<property name="hibernate-show_sql">true</property>
	<!--是否允许sql语句格式化-->
	<property name="hibernate.format_sql">true</property>
	<!--sql驱动-->
	<property name="hibernate.connection.driver_class">com.sql.jdbc.Driver</property>
	<!--自动补全-->
	<property name="hibernate.hbm2ddl.auto">none</property>
<!--加载hnm.xml的映射文件-->
	<mapping resource="cn/zhou/ hbm.xml" />
	</session-factory>
</hibernate-configuration>

QBC的研究和学习

QBC是按照条件查询,通过Criteria构造查询条件,即,通过使用Criteria的api进行去查询。通过对象进行拼装去查询。Hibernate 通过所拼写的对象生成sql语句!

// 通过Criteria对象去分组查询
Criteria criteria=session.createCriteria(Castumer.class);
criteria.add(Restrictions.eq("",""));  //查询的条件
criteria.add(Restrictions.like("","%内容%"));  //查询的条件
//查询单个投影列
criteria.setProjection(Projections.property("列名"))
List list=criteria.list();
//查询多个投影列.
criteria.setProjection(Projections.projectionList().add(Projections.property("列名"))
.add(Projections.property("列名"))
.add(Projections.property("列名"))
);

//将结果封装成对象object[]数组转成对象
criteria.setResultTransformer(new AliasToBeanResultTransformer(Cstumer.class));
//记录总数的查询
criteria.setProjection(Projections.rowCount());
Long title=criteria.uniqueResult();

Log4j的学习

  • 使用log4j自定义输出日志信息
  • hibernate 默认使用的是slf4j框架
  • slf4提供了提了一套日志接口的规范
    Log4j的使用步骤:
    1、在根目录下添log4.properties
    2、将jar包导进去

Log4j包括三个主要部件:
记录器:(Logger):配置日志在哪记录
输出源:(Appender):配置输出到哪里
布局:(Layouts):指定日志输出的格式
配置的内容:
log4j.rootLogger=debug,A
log4j.appender.A=org.apache.log4j.ConsoleAppender
在这里插入图片描述
log4j.appender.A.layout=org.apache.log4j.PatternLayout
在这里插入图片描述

日志级别会将比 log4j.rootLogger=debug A (debug)高的输出出来。

在开发结算将日志级别设置成debug,生产期间设置成infor或error
//在查询sql的时候可以将参数打印出来
log4j.logger.org.hibernate.type=TRACE

连接池c3p0

<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> 
<property name="hibernate.c3p0.max_size">20</property> 
<property name="hibernate.c3p0.min_size">5</property> 
<property name="hibernate.c3p0.timeout">120</property> 
<property name="hibernate.c3p0.max_statements">100</property> 
<property name="hibernate.c3p0.idle_test_period">120</property> 
<property name="hibernate.c3p0.acquire_increment">2</property> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值