Hibernate学习笔记2.1(Hibernate基础配置)
Hibernate基础配置
1.<property name="hbm2ddl.auto">update</property>
在SessionFactory创建时,自动将数据库schema的DDL导出到数据库. 使用 create-drop时,在显式关闭SessionFactory时,将drop掉数据库schema.
取值 update | create | create-drop
其实这个hibernate.hbm2ddl.auto参数的作用主要用于:自动创建|更新|验证数据库表结构。如果不是此方面的需求建议set value="none"。
create:
每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
create-drop :
每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
update:
最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。
validate :
每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。(操作任何数据之前,先检查是否值能够一一对应上)
2.在一般的web开发中,从纯理论上讲,便于数据库的跨平台,应该先建类后建表,但在实际开发中,是先建表,后建类(1.这是开发习惯 2.便于进行数据库的优化)
3.搭建日志环境
SLF4J
因为SLF4J-NODE 在实际开饭中用的并不是那么的多,所以我们重新学习使用log4j创建日志
首先log4j jar包下载地址:https://www.cr173.com/soft/64000.html
引入
其次因为我们引入的jar包里目前只有slf api 以及 log4j的实现 还缺一个将api转换为log4j能用的接口的jar包
因此 引入jar包 slf4j-log4j12-1.5.8.jar 上一节下载好了的文件
然后
在下载好的
\Hibernate3.3.2\hibernate-distribution-3.3.2.GA\project\etc 目录下 找到
log4j.properties
拷贝到项目中 这是log4j的配置文件
配置文件内容很多 用到的时候自行百度 就不多作介绍
引入完成之后 运行之后就可以看到日志在控制台输出
4.搭建junit环境
首先引入jar包
下载地址: http://www.java2s.com/Code/Jar/j/Downloadjunit47jar.htm
然后自己建立自己的library 然后在引入
编写测试类 TeacherTest.java
package com.bjsxt; import static org.junit.Assert.*; import java.util.Date; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import com.bjsxt.hibernate.Teacher; public class Teachertest { private static SessionFactory sf = null; @Test public void testTeachersave() { System.out.println("123131"); Teacher t = new Teacher(); t.setId(1); t.setName("t1"); t.setTitle("middle"); t.setBirthDate(new Date()); Session session = sf.getCurrentSession(); session.beginTransaction(); session.save(t); session.getTransaction().commit(); session.close(); } @BeforeClass public static void beforClass(){ sf = new AnnotationConfiguration().configure().buildSessionFactory(); } @AfterClass public static void afterClass(){ sf.close(); } }
在hibernatenate.cfg.xml里加上配置
<property name="show_sql">true</property> //显示sql语句 <property name="format_sql">true</property>//显示的时候加上回车
RUN AS JUNITE