ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# 1.2.3\. Hibernate配置 现在我们已经有了一个持久化类和它的映射文件,该是配置Hibernate的时候了。在此之前,我们需要一个数据库。 HSQL DB是种基于Java 的SQL数据库管理系统(DBMS),可以从HSQL DB的网站上下载。实际上,你只需下载的包中的`hsqldb.jar`文件,并把这个文件放在开发文件夹的`lib/`目录下即可。 在开发的根目录下创建一个`data`目录 - 这是HSQL DB存储数据文件的地方。此时在data目录中运行`java -classpath ../lib/hsqldb.jar org.hsqldb.Server`就可启动数据库。你可以在log中看到它的启动,及绑定到TCP/IP套结字,这正是我们的应用程序稍后会连接的地方。如果你希望在本例中运行一个全新的数据库,就在窗口中按下`CTRL + C`来关闭HSQL数据库,并删除`data/`目录下的所有文件,再重新启动HSQL数据库。 Hibernate是你的应用程序里连接数据库的那层,所以它需要连接用的信息。连接(connection)是通过一个也由我们配置的JDBC连接池(connection pool)来完成的。Hibernate的发布包里包含了许多开源的(open source)连接池,但在我们例子中使用Hibernate内置的连接池。注意,如果你希望使用一个产品级(production-quality)的第三方连接池软件,你必须拷贝所需的库文件到你的classpath下,并使用不同的连接池设置。 为了保存Hibernate的配置,我们可以使用一个简单的`hibernate.properties`文件,或者一个稍微复杂的`hibernate.cfg.xml`,甚至可以完全使用程序来配置Hibernate。多数用户更喜欢使用XML配置文件: ``` <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">org.hsqldb.jdbcDriver</property> <property name="connection.url">jdbc:hsqldb:hsql://localhost</property> <property name="connection.username">sa</property> <property name="connection.password"></property> <!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">1</property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.HSQLDialect</property> <!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property> <!-- Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property> <!-- Drop and re-create the database schema on startup --> <property name="hbm2ddl.auto">create</property> <mapping resource="events/Event.hbm.xml"/> </session-factory> </hibernate-configuration> ``` 注意这个XML配置使用了一个不同的DTD。在这里,我们配置了Hibernate的`SessionFactory`-一个关联于特定数据库全局的工厂(factory)。如果你要使用多个数据库,就要用多个的`&lt;session-factory&gt;`,通常把它们放在多个配置文件中(为了更容易启动)。 最开始的4个`property`元素包含必要的JDBC连接信息。方言(dialect)的`property`元素指明Hibernate 生成的特定SQL变量。你很快会看到,Hibernate对持久化上下文的自动session管理就会派上用场。 打开`hbm2ddl.auto`选项将自动生成数据库模式(schema)- 直接加入数据库中。当然这个选项也可以被关闭(通过去除这个配置选项)或者通过Ant任务`SchemaExport`的帮助来把数据库schema重定向到文件中。最后,在配置中为持久化类加入映射文件。 把这个文件拷贝到源代码目录下面,这样它就位于classpath的根目录的最后。Hibernate在启动时会自动在classpath的根目录查找名为`hibernate.cfg.xml`的配置文件。