第三步,我们还应该告诉hibernate应该到哪里连数据库,用到的用户名和密码,以及JDBC驱动程序等信息。这就需要用到一个配置文件来保存这些信息,这里我们采用使用较多的xml文件(另一种较少使用的是properties属性文件),其默认文件名为hibernate.cfg.xml,内容如下。
< xml version="1.0" encoding="gb2312" > http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
接下来我们该做什么呢?你肯定会疑问:到目前为止,我们写的都是JAVA程序和配置文件,怎么没见到一点hibernate框架的影子呢?是的,hibernate框架就是提供给我们的一个个的JAR包,而到目前为止我们都还没有见到其庐山真面目。这些JAR包可在hibernate官方网站上自由下载,本例中使用到的JAR包(其中有些是第三方的JAR包)如下:
其中hibernate3.jar是核心包,马上要用到的接口如org.hibernate.Session和org.hibernate.SessionFactory,以及类org.hibernate.cfg.Configuration,它们的定义都在此包中。最后一个JAR包,即sqljdbc4.jar是微软提供的用于访问SQL Server的JDBC驱动程序,我们在配置文件hibernate.cfg.xml中指定的驱动类,就在此JAR包中。Hibernate将使用此驱动程序,来对我们的数据库进行操作。其他的JAR包具体有什么作用,在这里就不一一细说了。随着我们越来越多地使用hibernate,相信就会逐渐明白、熟悉。我们在FirstHibernate目录下创建一个lib目录,用来保存这些JAR包。
//从JAR包中引入hibernate的相关接口、类。 import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import java.util.Random; public class TestHibernate { public static void main(String[] args) { //创建Configuration对象,此对象代表了我们的程序到数据库 //的hibernate配置。调用其configure()方法,此方法会自动 //搜索hibernate.cfg.xml配置文件。 Configuration cfg = new Configuration().configure(); //调用Configuration对象的buildSessionFactory()方法来 //创建会话工厂(SessionFactory)对象。 SessionFactory factory = cfg.buildSessionFactory(); //从会话工厂获得会话(Session)对象 Session session = factory.getCurrentSession(); //开始事务 session.beginTransaction(); User user = new User(); user.setName("阿汤哥"); user.setAge(new Random().nextInt(21) + 20); user.setGender("男"); //将此用户保存到数据库中的users表。在这里hibernate将用到 //映射文件User.hbm.xml中的信息。直接保存user对象,是不是 //比我们自己分别保存姓名、年龄等信息要简单、形象多了呢? //Hibernate将自动为我们生成insert语句。 session.save(user); //提交事务。 session.getTransaction().commit(); //关闭SessionFactory factory.close(); } } 到目前为止,似乎大功告成,那让我们来编译、运行一下这个程序,看有什么效果。作为准备工作,首先确保已设置了classpath环境变量,并将当前目录(.)添加进了此变量。可在命令行窗口下临时设置只对本命令窗口有效的classpath环境变量,并添加当前目录,命令为:set classpath=.。以下叙述都在此设置下进行。打开命令行窗口,切换到E:\DemoPrograms\FirstHibernate目录下,运行命令javac *java,编译所有JAVA源程序。
经过了似乎是很漫长、焦灼的等待,我们迎来了几个错误。仔细一看,核心错误就是org.hibernate和org.hibernate.cfg这两个软件包找不到。当然找不到了!这两个软件包的class文件在hibernate3.jar包里,而我们没有把这个jar包添加到classpath中,这样就当然找不到了。怎么添加呢?由于这个JAR包在目录E:\DemoPrograms\FirstHibernate\lib下,因此我们可以这样写命令:
set classpath=%classpath%;E:\DemoPrograms\FirstHibernate\lib\hibernate3.jar。
在这里%classpath%的意思是把classpath现有的值取出,再加上我们需要添加的值,它们之间要用英文的分号(;)隔开,就得到了新的classpat