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. ...
随机推荐
- 游戏Loading中的小提示和Loading动画实现
学习unity1年多了,工作也1年了,因为工作需要,有几个月没接触unity Ngui啦. 学的还是不踏实.继续努力吧.由于下周就要进行新游戏的开发,这几天熟悉熟悉NGUI,今天按照现在公司以前的项目 ...
- 8.4.4 Picasso
Picasso 收到加载及显示图片的任务,创建 Request 并将它交给 Dispatcher,Dispatcher 分发任务到具体 RequestHandler,任务通过 MemoryCache ...
- Software Testing hw1
I still remember the error which I made in my java project last year. I spent a whole night solving ...
- [原] XAF How to Edit multiple objects in a ListViewAndDetailView
2014年好久没有更新Blog了,工作调换了,很少用XAF,但还是很关注XAF的发展和学习,对中国的中小企业数据管理软件开发真的太实用了!! 功能比较简单,但很实用,直接上图和代码! ListView ...
- Canny边缘检测及图像缩放之图像处理算法-OpenCV应用学习笔记四
在边缘检测算法中Canny颇为经典,我们就来做一下测试,并且顺便实现图像的尺寸放缩. 实现功能: 直接执行程序得到结果如下:将载入图像显示在窗口in内,同时进行图像两次缩小一半操作将结果显示到i1,i ...
- SQL Server认证培训与考试
Microsoft 技术专员 (MTA) - 数据库 https://www.microsoft.com/zh-cn/learning/mta-certification.aspx MCSA: SQL ...
- Jexus针对Asp.net core应用程序的六大不可替代的优势
1,配置简便:在Jexus上,Asp.net core只是Jexus上的一个"站点",因此,只需在Jexus上配置这个站点就行,无需其它配置: 2,操作统一:Jexus停止这个站点 ...
- select * from table 时间长
优化中发现一个存储过程执行20秒通过profiler 抓取发现时间主要消耗在一个select * from 表,那么问题来了select几万数据竟然花了将近20秒? 问题排查清了程序前端使用了data ...
- 千呼万唤始出来!—— GG(高仿QQ)终于有移动端了!(技术原理、实现、源码)
首先要感谢大家一直以来对于GG的关注和支持!GG的不断完善与大家的支持分不开! 从2013年最初的GG1.0,到后来陆续增加了网盘功能.远程协助功能.离线文件功能.群聊功能.语音聊天功能.视频聊天功能 ...
- Backbone源码解析(四):View(视图)模块
View视图故名思义,它控制的是界面.我们可以把一个大的网页分成很多部分的视图,按照backbone的架构,每一个视图对应都是一个对象,我们可以通过元素的钩子(id或者class或者其他选择器)把它们 ...