Hibernate学习笔记2.1(Hibernate基础配置)

时间:2022-10-15 16:12:03

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("");
Teacher t = new Teacher();
t.setId();
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