【Hibernate框架开发之三】搭建Hibernate日志(slf4j转log4j)环境并搭建Junit单元测试环境!


本站文章均为 李华明Himi 原创,转载务必在明显处注明:
转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/hibernate/806.html

          ☞ 点击订阅 ☜
 本博客最新动态!及时将最新博文通知您!

由于最新写cocos2dx动作编辑器的解析和框架所以没更新,那么从今天开始继续来学习Hibernate,那么接着第二篇文章讲解,那么首先copy,第二篇的第一个Annotation的项目改个名字“LogForHibernate”;

          首先搭建log4j环境;

第一步我们之前设置过的User Libraries继续添加打印日志相关的配置,(ps.其实日志的控制台打印,对于我们Dev来说至关重要,一方面了解当前程序运行的情况即时找到BUG出处~,另外一方面log4j日志能为我们),添加如下jar包到Himi的MyHibernate(自定义的User Libraries):

首先Himi的MyHibernate删除slf4-nop-1.5.8.jar 包,然后换成log4j的实现如下第一个jar包:

第一个jar包         /apache-log4j-1.2.15/log4j-1.2.15.jar

继续添加第二个jar包         /slf4j-1.5.8/slf4j-1.5.8/slf4j-log4j12-1.5.8.jar

(这个slf4j-log4j12-1.5.8.jar,其实就是将slf4j 转换成log4j 日志的“适配器”;)

接下来我们需要配置一下log4j的配置文件,默认这个配置文件名,约定俗成:“log4j.properties”

不用手动创建,直接到如下路径索取:

/hibernate-distribution-3.3.2.GA/project/etc/log4j.properties

copy到项目中即可,与“hibernate.cfg.xml”放置同一级目录,OK,直接运行项目观察控制台,会发现很多debug信息,有些我们先用不到,OK,打开log4j.properties配置文件,改成如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
 
### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
 
### set log levels - for more verbose logging change 'info' to 'debug' ###
 
log4j.rootLogger=warn, stdout
 
#log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug
 
### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug
 
### log just the SQL
#log4j.logger.org.hibernate.SQL=debug
 
### log JDBC bind parameters ###
#log4j.logger.org.hibernate.type=info
#log4j.logger.org.hibernate.type=debug
 
### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=debug
 
### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug
 
### log cache activity ###
#log4j.logger.org.hibernate.cache=debug
 
### log transaction activity
#log4j.logger.org.hibernate.transaction=debug
 
### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug
 
### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace

这里我们只留下,log4j.logger.org.hibernate.tool.hbm2ddl=debug  ,DDL的输出即可;

OK,Himi再次运行项目打印如下:

1
2
3
4
5
6
7
00:58:31,450  INFO SchemaExport:226 - Running hbm2ddl schema export
00:58:31,451 DEBUG SchemaExport:242 - import file not found: /import.sql
00:58:31,452  INFO SchemaExport:251 - exporting generated schema to database
00:58:31,452 DEBUG SchemaExport:377 - drop table if exists People
00:58:31,462 DEBUG SchemaExport:377 - create table People (id integer not null, age integer not null, birthday varchar(255), name varchar(255), title varchar(255), primary key (id))
00:58:31,565  INFO SchemaExport:268 - schema export complete
Hibernate: insert into People (age, birthday, name, title, id) values (?, ?, ?, ?, ?)

这次看起来就非常清晰了。

//————–Himi  分割线—————

    下面介绍  Junit的环境搭建;

copy 刚才的”LogForHibernate”项目,换名:“JunitForHibernate”;

OK,添加所需资源jar包,这里Himi添加到项目path中的为:junit-4.7.jar 包;

下一步,右键new->JUnit Test Case,如下图:

 

然后选择我们需要测试的方法:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package com.himi;
 
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
 
public class PeopleTest {
     public static SessionFactory sf = null ;
 
     //在类始化之前执行的方法
     @BeforeClass
     public static void beforeClass(){
         sf= new AnnotationConfiguration().configure().buildSessionFactory();
     }
 
     @Test
     public void test() {
         People people = new People(); // 新建我们需要存储的类对象,并且设置其对象的一些属性
         people.setId( 1 );
         people.setName( "Himi" );
         people.setAge( 23 );
         people.setTitle( "CTO" );
         people.setBirthday( "1990-01-01" );
 
         // 这里注意了,cfg.configure()读取配置文件的时候,如果你的hibernate的文件名不采用默认的“hibernate.cfg.xml”的话,那么这里传入你定义的配置文件路径
         // buildSessionFactory();得到一个创建Session的工场
         Session ss = sf.openSession(); // 这里的Session导入import
                                         // org.hibernate.Session;不要使用class经典的,因为可能会过时
         ss.beginTransaction(); // OK,将操作放入事务中
         ss.save(people); // 保存你的对象
         ss.getTransaction().commit(); // 得到事务并提交
 
         ss.close(); // Session关闭
 
     }
     //在类结束之后执行的方法
     @AfterClass
     public static void afterClass(){
         sf.close(); // 工厂关闭
     }
}

OK,就到这里,感冒了 早睡觉~晚安 各位;



评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值