hibernate(三)基本配置,log4j、JUnit配置
一、基本配置
1、<property name="hbm2ddl.auto">update</property>
改项配置有4个选项:
validate:当创建好表,当我们操纵数据之前会检查数据库中表与配置文件对应上;
update:如果我们添加了新的属性,而数据库中的表中没有该列,hibernate会帮我添加该字段(或者是我们在实体类中增加一个属性(比如在Student类中添加一个属性sex)hibernate会帮我们添加);
create:启动时如果对应表存在则drop掉然后再创建,如果数据库没有对应的表,hibernate会自动帮我们创建;
下图是设置为create时日志

create-drop:只要关闭SessionFactory,hibernate会自动删除表;
2、如果表名与类名不一致则可以在实体类上的@Entity注解下边再添加@Table(name="teacher")
如果使用配置文件配置映射的话可以在class标签上添加属性table="teacher"
3、注解@Basic可不加,默认会把实体类中所有属性映射到数据库表。所有没有定义注解的属性都会等价为在上边添加了@Basic
4、如果字段名与属性名不相同,采用注解配置的话则在属性get方法上添加@Cloumn(name="_name"),如果采用配置文件方式则添加cloumn属性
5、如果不想一个实体类的属性不参与映射,则在get方法上添加注解@Transient,xml配置文件的话就不要写这个属性即<property .../>这个东西不用写进去
6、映射日期与时间,指定时间精度@Temporal(注:如果注解中需要写value="..."则可以省略value直接写属性值)
如果只记日期不记录时间则可以在属性的get方法上写注解@Temporal(TemporalType.DATA)
如果采用配置文件方式配置映射则在配置文件class标签下指定的属性对应的<property>标签中添加属性type="date",或者type="time"(只显示时间不显示日期),type用于指定类型
7、映射枚举类型@Enumerated
如果要映射枚举类型可以在属性的get方法上添加注解@Enumerated(EnumType.STRING)(在数据库中该属性对应的字段为varchar类型)
如果EnumType.ORDINAL就会把下标值存进去(即在数据库中该属性对应的字段为integer类型)
8、注解可以放在实体类的成员变量上,与放在get方法上起到相同的效果
二、配日志环境显示DDL
首先导入slf4j-api-1.6.1.jar,然后下载sjf4j(1.6.1)和log4j(1.2.17)解压。然后导入slf4j-log4j12-1.6.1-jar、log4j-1.2.17.jar到hibernate下
然后从hibernate示例中copy一份log4j配置文件到src目录下
log4j.properties例:
### 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
执行StudentTest测试类,就可以在控制台看到打印的日志了,如果在hibernate.cfg.xml设置<property name="hbm2ddl.auto">create</property>的话就可以看到建表语句了:

当然,通过设置配置文件更改日志输出的内容(级别),将除log4j.logger.org.hibernate.tool.hbm2ddl=debug以外的配置全部屏蔽就只会在控制台中看到ddl了
三、搭建Junit
参见另一篇文章:Junit4使用http://www.cnblogs.com/orlion/p/4996148.html
1、首先下载解压,然后bulid path->add libraries->user library->user libraries->new然后输入MyJunit然后把刚才下载的Junit的包加进去
2、项目根目录下创建一source folder名为test,然后因为要对Student、Teacher类进行测试(注:并不是要测试这两个类,只是会用这两个类进行测试)所有在test下创建包为cn.orlion.hibernate.model
3、创建测试类,可以让eclipse帮我们创建:在测试包右键->new->Junit Test Case-填入测试的类:

然后创建测试方法testTeacherSave()
package cn.orlion.hibernate.model; 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 TeacheTest { private static SessionFactory sf = null; @BeforeClass
public static void beforeClass(){ sf = new AnnotationConfiguration().configure().buildSessionFactory();
} @Test
public void testTeacherSave() {
Teacher t = new Teacher(); t.setName("test1");
t.setTitle("title1"); Session session = sf.openSession(); session.beginTransaction();
session.save(t);
session.getTransaction().commit(); session.close(); } @AfterClass
public static void afterclass(){
sf.close();
} }
testTeacherSave()方法上右键Run as-> Junit test可以看绿条,success。
四、showsql formatsql
1、hibernate.cfg.xml中配置<property name="show_sql">true</property>就会在控制台中打印出sql语句
2、<property name="format_sql">true</property>就会在控制台中打印出格式化后的sql语句,而不是单单在一行显示,更加直观友好:

hibernate(三)基本配置,log4j、JUnit配置的更多相关文章
- commons-logging和Log4j 日志管理/log4j.properties配置详解
commons-logging和Log4j 日志管理 (zz) 什么要用日志(Log)? 这个……就不必说了吧. 为什么不用System.out.println()? 功能太弱:不易于控制.如果暂时不 ...
- log4j.properties和log4j.xml配置
>>>>1. 概述<<<< 1.1. 背景 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统 ...
- junit中配置log4j日志
在对项目单元测试的时候,有时候会使用log4j来打印日志,这个时候需要对log4j进行配置. 声明和继承SpringJUnit4ClassRunner类,在这个类中对log4j的配置文件进行加载. p ...
- Hibernate配置log4j日志环境
1.准备所需的jar 说明:具体所使用的jar包的版本与你所使用的Hibernate版本有关,我用的是(hibernate-release-4.3.11.Final) <1>准备slf4j ...
- springmvc 项目完整示例06 日志–log4j 参数详细解析 log4j如何配置
Log4j由三个重要的组件构成: 日志信息的优先级 日志信息的输出目的地 日志信息的输出格式 日志信息的优先级从高到低有ERROR.WARN. INFO.DEBUG,分别用来指定这条日志信息的重要程度 ...
- Hibernate4搭建Log4J日志管理(附Log4j.properties配置详解)
1.首先加入slf4j的jar包,即slf4j-api-1.6.1.jar 在hibernate官网下载hibernate-release-4.2.2.Final.zip并解压,在hibernate- ...
- Log4j中配置日志文件相对路径
方法一. 解决的办法自然是用相对路径代替绝对路径,其实log4j的FileAppender本身就有这样的机制,如:log4j.appender.logfile.File=${WORKDIR}/logs ...
- springmvc 项目完整示例05 日志 --log4j整合 配置 log4j属性设置 log4j 配置文件 log4j应用
log4j 就是log for java嘛,老外都喜欢这样子,比如那个I18n ---internationalization 不就是i和n之间有18个字母... http://logging.a ...
- 170512、java日志文件log4j.properties配置详解
一.Log4j配置 第一步:加入log4j-1.2.8.jar到lib下. 第二步:在CLASSPATH下建立log4j.properties.内容如下: 放在src下的话就不用配置 否则得去web. ...
随机推荐
- HDU 1051 Wooden Sticks
题意: 有 n 根木棒,长度和质量都已经知道,需要一个机器一根一根地处理这些木棒. 该机器在加工过程中需要一定的准备时间,是用于清洗机器,调整工具和模板的. 机器需要的准备时间如下: 1.第一根需要1 ...
- SQL SERVER 2000数据库置疑处理
由于服务器意外的断电,导致SQL SERVER服务器上数据库出现“置疑”而无法使用,通过网上搜索,找到以下方法解决问题,这里记录一下: 产生数据库置疑的时侯,数据库文件和日志文件都是存在的,如果数据库 ...
- ‘ant-version’不是内部或外部命令,也不是可运行的程序
下载apache-ant-1.9.2-bin.zip后,解压目录:F:\selenium\apache-ant-1.9.2 配置环境变量,在“我的电脑->属性->高级->环境变量 - ...
- misc
1.对于给定的二维码图片不能直接扫描出来的可以进行反色在进行扫描,反色可以直接选中图片然后就会进行反色.2.局域网中抓取的数据包的加密方式可能是aes加密.3.凯撒加密可能是变种的凯撒加密,可能奇数偶 ...
- centos 安装apache 和 php5.6
centos 安装 php5.6,安装前需要先安装数据库和apache 安装 apache2.4 安装基础依赖:# yum install gcc gcc-c++ glibc glibc-devel ...
- SQL Server 2008 R2 下移动数据库的存储位置
使用场景:1. 该数据库增长的较大,存储磁盘空间不足: 2. 在特定情况下该数据库需要移动到另外一块磁盘上(呵呵...我的情况就是之前的磁盘要还给别人) 步骤: 1. 新建查询 SELECT na ...
- Focus, w/o disturbance
Focus = Aim + Execution + Persistence Disturbance = Disappointment + Anxiety + Failure
- 工作当中实际运用(2)——js原生实现全选/反选
老规矩 直接上代码 代码中详细注释: function checkAll(){ var alls=document.getElementById('tab-stp').getElementsByTa ...
- Controller的生命周期是Transient还是PerWebRequest?
当我们用在MVC总使用IoC时,大家的Controller生命周期(lifestyle)是以哪种方式注册的呢? 之前我一直没有思考过这个问题.众所周知在MVC开发过程中,大部分的组件都是以PerWeb ...
- Java多线程1:进程与线程概述
进程和线程 谈到多线程,就得先讲进程和线程的概念. 进程 进程可以理解为受操作系统管理的基本运行单元.360浏览器是一个进程.WPS也是一个进程,正在操作系统中运行的".exe"都 ...