一、基本配置

  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配置的更多相关文章

  1. commons-logging和Log4j 日志管理/log4j.properties配置详解

    commons-logging和Log4j 日志管理 (zz) 什么要用日志(Log)? 这个……就不必说了吧. 为什么不用System.out.println()? 功能太弱:不易于控制.如果暂时不 ...

  2. log4j.properties和log4j.xml配置

    >>>>1. 概述<<<< 1.1. 背景 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统 ...

  3. junit中配置log4j日志

    在对项目单元测试的时候,有时候会使用log4j来打印日志,这个时候需要对log4j进行配置. 声明和继承SpringJUnit4ClassRunner类,在这个类中对log4j的配置文件进行加载. p ...

  4. Hibernate配置log4j日志环境

    1.准备所需的jar 说明:具体所使用的jar包的版本与你所使用的Hibernate版本有关,我用的是(hibernate-release-4.3.11.Final) <1>准备slf4j ...

  5. springmvc 项目完整示例06 日志–log4j 参数详细解析 log4j如何配置

    Log4j由三个重要的组件构成: 日志信息的优先级 日志信息的输出目的地 日志信息的输出格式 日志信息的优先级从高到低有ERROR.WARN. INFO.DEBUG,分别用来指定这条日志信息的重要程度 ...

  6. Hibernate4搭建Log4J日志管理(附Log4j.properties配置详解)

    1.首先加入slf4j的jar包,即slf4j-api-1.6.1.jar 在hibernate官网下载hibernate-release-4.2.2.Final.zip并解压,在hibernate- ...

  7. Log4j中配置日志文件相对路径

    方法一. 解决的办法自然是用相对路径代替绝对路径,其实log4j的FileAppender本身就有这样的机制,如:log4j.appender.logfile.File=${WORKDIR}/logs ...

  8. springmvc 项目完整示例05 日志 --log4j整合 配置 log4j属性设置 log4j 配置文件 log4j应用

    log4j 就是log for java嘛,老外都喜欢这样子,比如那个I18n  ---internationalization  不就是i和n之间有18个字母... http://logging.a ...

  9. 170512、java日志文件log4j.properties配置详解

    一.Log4j配置 第一步:加入log4j-1.2.8.jar到lib下. 第二步:在CLASSPATH下建立log4j.properties.内容如下: 放在src下的话就不用配置 否则得去web. ...

随机推荐

  1. iOS navigationcontroller pop 回到上一层视图 如何刷新

    1.从视图A中navigation controller push到视图B,当视图B navigationcontroller pop回到视图A时,并不会调用A的viewDidLoad,但是会调用vi ...

  2. Mac 识别NTFS移动硬盘

    下载工具 TUXERA NTFS 2014

  3. React 随笔二

    这周做的demo3和demo4.5 随记的小点. 1.js错误提示: Warning: Each child in an array or iterator should have a unique  ...

  4. 读bootstrap2.3.2有感2

    排版: Bootstrap定义的全局 font-size 是 14px,line-height 是 20px.这些样式应用到了 <body> 和所有的段落上.另外,对 <p> ...

  5. [转载]iOS9 使用CoreLocation

    在iOS8之前,只要 #import <CoreLocation/CoreLocation.h>引入CoreLocation.framework. @property (nonatomic ...

  6. python 实现简单排序

    今天偶得一本神奇的算法秘笈,据编辑说是一本easy and intresting 的书,所以我就开始翻开了. 书中作者用的是C语言,我最近正啃python 所以想着用python来解决作者的提问. 这 ...

  7. TCPDF 6.0.036 发布,PHP 的 PDF 操作包

    TCPDF 6.0.036 包含对注册色彩的支持. TCPDF是一个用于快速生成PDF文件的PHP5函数包.TCPDF基于FPDF进行扩展和改进.支持UTF-8,Unicode,HTML和XHTML.

  8. 作业三:PSP耗时

    请同学们参照教材<构建之法>2.3节表2-4 PSP2.1汇报自己在完成四则运算编程时候的时间分布,发布到博客上. 个人项目耗时情况分析 PSP Personal Software Pro ...

  9. silverlighter下MVVM模式中利用Behavior和TargetedTriggerAction实现文本框的一些特效

    在silverlight一般开发模式中,给文本框添加一些事件是轻而易举的,然而MVVM开发模式中,想要给文本框添加一些事件并非那么容易,因为MVVM模式中,只有ICommand接口,而且也只有Butt ...

  10. 【译】Activitys, Threads和 内存泄露

    Android编程中一个共同的困难就是协调Activity的生命周期和长时间运行的任务(task),并且要避免可能的内存泄露.思考下面Activity的代码,在它启动的时候开启一个线程并循环执行任务. ...