slf日志接口, 实现有slf4j nodep, log4j

hibernate里我们一般用 log4j,所以删除之前创建的hibernate 包里的 slf4j-nop包, 加入log4j-1.2.17.jar

现在hibernate的包里有slf的api 的jar, 不能和log4j 自动匹配, 所以中间需要一个接口, 再加入 slf4j-log4j 的包 (1.5.8)

这样在运行界面就可以看到有建表等语句.

ddl语句就出来了:

14:00:20,587  INFO SchemaExport:179 - exporting generated schema to database
14:00:20,588 DEBUG SchemaExport:303 - drop table if exists Teacher
14:00:20,890 DEBUG SchemaExport:303 - drop table if exists student
14:00:21,022 DEBUG SchemaExport:303 - create table Teacher (id integer not null, name varchar(255), title varchar(255), primary key (id))
14:00:21,309 DEBUG SchemaExport:303 - create table student (id integer not null, name varchar(255), age integer, primary key (id))
14:00:21,530 INFO SchemaExport:196 - schema export complete

 

因为debug信息太多, 只保留数据库信息可以将log4j.properties里的内容只保留下面2句, 其余都屏蔽:

log4j.rootLogger=warn, stdout
log4j.logger.org.hibernate.tool.hbm2ddl=debug

最后ddl日志信息如下:

14:13:24,066  INFO SchemaExport:154 - Running hbm2ddl schema export
14:13:24,068 DEBUG SchemaExport:170 - import file not found: /import.sql
14:13:24,068 INFO SchemaExport:179 - exporting generated schema to database
14:13:24,069 DEBUG SchemaExport:303 - drop table if exists Teacher
14:13:24,193 DEBUG SchemaExport:303 - drop table if exists student
14:13:24,279 DEBUG SchemaExport:303 - create table Teacher (id integer not null, name varchar(255), title varchar(255), primary key (id))
14:13:24,372 DEBUG SchemaExport:303 - create table student (id integer not null, name varchar(255), age integer, primary key (id))
14:13:24,552 INFO SchemaExport:196 - schema export complete
Hibernate: insert into Teacher (name, title, id) values (?, ?, ?)

  

搭建junit日志环境

preferrence里新建MyJUnit包, 加入junit包, 然后再项目右键add libary把自己的MyJUnit导入进项目.

1. 创建测试代码包: 项目右键 new --- source folder---test, 里面装测试代码, src里面都是项目代码  

2. 给test创建一个和上面model一样的package, 然后创建测试类 TeacherTest.java的unit test, 代码如下:

package com.bjsxt.hibernate.model;

import static org.junit.Assert.*;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import org.junit.Test; public class TeacherTest { @Test
public void testTeacherSave() {
Teacher t =new Teacher();
t.setId(4);
t.setName("wdfd");
t.setTitle("high"); Configuration cfg=new AnnotationConfiguration();
SessionFactory sf=cfg.configure().buildSessionFactory(); //默认找hibernate.cfg.xml,然后产生一个connection工厂
Session session = sf.openSession();
session.beginTransaction();
session.save(t);
session.getTransaction().commit();
session.close();
sf.close();
} }

上面代码中每次创建sessionFactory比较费时, 所以考虑用beforeclass和afterclass:

package com.bjsxt.hibernate.model;

import static org.junit.Assert.*;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test; public class TeacherTest {
private static SessionFactory sf=null;
@BeforeClass
public static void beforeClass(){
sf=new AnnotationConfiguration().configure().buildSessionFactory();
}
@Test
public void testTeacherSave() {
Teacher t =new Teacher();
t.setId(4);
t.setName("wdfd");
t.setTitle("high"); Session session = sf.openSession();
session.beginTransaction();
session.save(t);
session.getTransaction().commit();
session.close();
sf.close();
}
@AfterClass
public static void afterClass(){
sf.close();
}
}

  

有时test文件会出错, 无法追踪, 需要在 方法加try catch:

	@BeforeClass
public static void beforeClass(){
try {
sf=new AnnotationConfiguration().configure().buildSessionFactory();
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

或者加一个main方法, 调用beforeClass();  

Hibernate---基础配置之日志信息slf 及搭建日志环境的更多相关文章

  1. Hibernate学习笔记2.1(Hibernate基础配置)

    Hibernate基础配置 1.<property name="hbm2ddl.auto">update</property> 在SessionFactor ...

  2. 3.Hibernate基础配置

    1.Hibernate.cfg.xml:hbm2ddl.auto 在SessionFactory创建时,自动检查数据库结构,或者将数据库schema的DDL导出到数据库 <property na ...

  3. Hibernate 基础配置及常用功能(三)

    本章重点讲述Hibernate对象的三种状态以及如何配置二级缓存 有关Hibernate的三种状态如何相互转换网上都能查到,官方文档描述的也比较详细.这里主要是针对几个重点方法做代码演示. 一.状态转 ...

  4. Hibernate 基础配置及常用功能(一)

    本来是想等全部框架测试完以后再统一发布的,但是随着测试的一点点增加感觉把需要叙述的东西放在一起终将会是一场灾难.所以还是打算分成几章来描述,其中还包括一些有待解决的问题.短期很难腾出时间来仔细阅读Hi ...

  5. 使用log4j使某些java类的日志信息输出到指定日志文件中

    Log4j 是 Apache 的一个开放源代码项目,通过使用 Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI 组件.甚至是套接口服务器.NT 的事件记录器.UNIX Syslog ...

  6. 【ELK】5.spring boot日志集成ELK,搭建日志系统

    阅读前必看: ELK在docker下搭建步骤 spring boot集成es,CRUD操作完整版 ============================================== 本章集成 ...

  7. Hibernate 基础配置及常用功能(二)

    本章主要是描述几种经典映射关系,顺带比较Hibernate4.x和Hibernate5.x之间的区别. 一.建立测试工程目录 有关实体类之间的相互映射关系,Hibernate官方文档其实描述的非常详细 ...

  8. hibernate基础配置

    数据库表名和类名 一致 注解:可写可不写: XML:可写可不写: <class name="Student"> 不一致 注解:  public class Teache ...

  9. Hibernate学习笔记2.3(Hibernate基础配置)

    映射,注释可以放在成员变量上面,也可以放在get方法上面 写在成员变量的话 破坏了java的面向对象思维 直接让hibernate访问内部的私有元素 要是能直接设指不合适哈哈 所以主张写在get方法上 ...

随机推荐

  1. 解读QML之三

    QML语法 1.QML基本语法 1.1导入声明 导入声明允许客户端告诉QML引擎可以在QML文档中使用哪些模块,JavaScript资源以及组件目录.文档中可以使用的类型依赖于在文档中导入的模块.资源 ...

  2. Eclipse 安装最新SVN插件

    本文来源:http://liujianqiao398.blog.163.com/blog/static/181827257201331194610634/ Eclipse 安装最新SVN插件 2013 ...

  3. Git如何删除版本库中的一个提交?

     如果不小心增加了一个最新的提交,可以通过以下的操作删除,记住:是删除最新的提交,如果回滚到其他的提交上面,就会导致之后的全部消失. 1.git reset --hard HEAD~1    2.gi ...

  4. RING0,RING1,RING2,RING3

    Intel的CPU将特权级别分为4个级别:RING0,RING1,RING2,RING3.Windows只使用其中的两个级别RING0和RING3,RING0只给操作系统用,RING3谁都能用.如果普 ...

  5. Android中的对话框AlertDialog使用技巧合集-转载

    Android中的对话框AlertDialog使用技巧合集     文章来自:http://blog.csdn.net/blue6626/article/details/6641105   今天我用自 ...

  6. bos项目经验心得(1)

    ---恢复内容开始--- 一.搭建数据库环境: 1.在cmd窗口登录mysql数据库: mysql -uroot -proot   (mysql登录数据库的形式就是 mysql-u用户名 -p密码) ...

  7. SimplePath 使用心得

    上图是 用SimplePath 做的 寻路,其中 三个 绿点 是 移动的 目标点,三个红点 是 角色移动,蓝色方块是阻挡物体. 这三个角色 移动 有三种 方式,1 随机移动2 按照 绿色小球点 移动  ...

  8. C# Socket的TCP通讯 异步 (2015-11-07 10:07:19)转载▼

    异步 相对于同步,异步中的连接,接收和发送数据的方法都不一样,都有一个回调函数,就是即使不能连接或者接收不到数据,程序还是会一直执行下去,如果连接上了或者接到数据,程序会回到这个回调函数的地方重新往下 ...

  9. java 面向抽象编程的思想

    SIM.java public abstract class SIM { public abstract void setNumber(String n); public abstract Strin ...

  10. Linux学习 -- 系统管理

    1 进程管理 判断服务器健康状态 top [选项] 查看系统中所有进程 ps aux      BSD格式 ps -le        Linux格式 pstree [选项] -p   显示PID - ...