Hibernate---基础配置之日志信息slf 及搭建日志环境

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();  

时间: 2024-08-18 02:55:05

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

3.Hibernate基础配置

1.Hibernate.cfg.xml:hbm2ddl.auto 在SessionFactory创建时,自动检查数据库结构,或者将数据库schema的DDL导出到数据库 <property name="hbm2ddl.auto">create</property>  除了 create 还有其他取值,可以去查文档 a)先建表还是先建实体类 (理论先类,实际先表) 2.搭建日志环境并配置显示DDL语句(数据库定义语言:直接提交的)(就是SQL语句) 使用slf接口

Hibernate基础配置

在hibernate.cfg.xml中的基础配置: show_sql format_sql hbm2ddl.auto :有四个选项  validate . update . create . create-drop create :数据库中没有表的话会自动创建. update: 原来有表,但是在配置文件中表的结构修改了,会自动更新数据库中的表. 通过配置文件或者annotation自动建表 搭建日志环境并配置显示DDL语句(建表语句) 搭建Junit环境(注意Junit的Bug) 表名和类名不同

Hibernate基础配置——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"> <!-- 

Mybatis日志信息

问题:开发组说MyBatis的日志信息只能通过顶级日志记录器在debug下打印SQL,所以测试时一大堆的信息,弄得个单元测试,启动要老半天. 为了解决这样的问题,我看了下开发组的日志信息配置,代码如下: log4j.logger.com.ibatis=DEBUG log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG log4

Swing应用开发实战系列之五:后台日志信息前台监控器

作为一个程序设计人员,我们深知日志的重要性,对于日志的监控,我们通常不外乎采用以下两种方式:日志文件方式和后台打印方式,常规情况下,这两种日志监控方式完全可以满足我们对日志监控的需要.但是,当我们用Swing进行前台开发时,常常想能不能把后台服务运行日志实时地显示在前台窗口中,或者只是将某类我们比较关心的日志信息(譬如异常日志等)实时动态地显示在前台窗口中,这样方便我们及时监控和处理.这个设想我们称之为“后台日志信息前台监控器”. 设计这样一个“后台日志信息前台监控器”,有两个难点,第一个是,当

日志信息相关内容 一

# 日志的处理 # 1.记录的信息不全面,比如没有记录时间信息.没有执行人信息.日志等级信息.日志详细信息 # 2.文件记录的信息混乱不清,不方便使用脚本统计 # 3.当日志文件大的时候,没有自动进行日志轮转功能 # 引出 日志器 # 日志信息 # 日志收集器(Logger),用来装日志信息 # 日志收集器的日志等级(NOTSET(0).DEBUG(10).INFO(20).WARNING(30).ERROR(40).CRITICAL(50)) # NOTSET(0):无限制,只要是日志信息都可

如何关闭log4j中配置的spring或者hibernate的日志信息

通常在建立一个web项目的时候,我们通常需要为其配置日志,以便了解启动过程中发生了什么,如果启动过程中发生了错误,则可以很方便的查看错误的信息,但是在项目部署到服务器上时,打印日志信息,需要耗费大量的时间,启动速度会很慢, 那么如何关闭这些日志信息呢 只需要的lo4j.properties文件中配置如下两句话即可 log4j.logger.org.springframework=OFF log4j.logger.org.hibernate=OFF

日志分析-1.rsyslog 基础配置(服务器/客户端)

日志分析-1.rsyslog 基础配置(服务器/客户端)centos6起/etc/syslog.conf不再有!而是/etc/rsyslog.conf代替!rsyslog是syslog的多线程增强版,现在Fedora.Ubuntu,.rhel6.centos6默认的日志系统都是rsyslog了.rsyslog主要用来收集系统产生的各种日志,日志默认放在/var/log/目录下.日志收集工具,不仅仅可以收集本机的日志,还可以收集其他机器的日志 在客户端/服务器架构的配置下,rsyslog同时扮演了

hibernate学习笔记_基础配置

一.hibernate.cfg.xml: hbni2ddl.auto 二.搭建日志环境并配置显示DDL语句 我们使用slf接口,然后使用log4j的实现. 1.  首先引入log4j的jar包(log4j-1.2.14.jar), 2.  然后再引入slf4j实现LOG4J和适配器jar包(slf4j-log4j12-1.5.8.jar) 3.  最后创建log4j的配置文件(log4j.properties),并加以修改,只要保留 log4j.logger.org.hibernate.tool