在这篇文章中,我们将向您演示如何在不使用hibernate.cfg.xml
文件的情况下创建或配置简单的Hibernate应用程序。
此应用程序使用的技术和工具,如下 -
- Hibernate 5.2.6.Final
- Eclipse Mars.2(4.5.2)
- Maven 3.3.9
- JavaSE 1.8
- PostgreSQL
下面将编写一个简单的应用程序,它将打印的PostgreSQL数据库的版本。
第1步 - 创建一个maven项目
参考这篇文章学习 - 如何在eclipse中创建maven项目。
第2步 - 将jar依赖关系添加到pom.xml
打开pom.xml
文件并添加所需的Hibernate和PostgreSQL依赖关系。文件:pom.xml -
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.yiibai.tutorial.hibernate</groupId>
<artifactId>hibernate-config-example</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>hibernate-tutorial</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- PostgreSQL -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4.1212.jre7</version>
</dependency>
<!-- Hibernate 5.2.6 Final -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.6.Final</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src/main/java</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
第3步 - 创建一个Hibernate实用程序类
创建一个名为HibernateUtil.java
的类并在其中写入以下代码。
文件:HibernateUtil.java -
package com.yiibai.tutorial.hibernate;
import java.util.HashMap;
import java.util.Map;
import org.hibernate.SessionFactory;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Environment;
/**
* @author imssbora
*/
public class HibernateUtil {
private static StandardServiceRegistry registry;
private static SessionFactory sessionFactory;
public static SessionFactory getSessionFactory() {
if (sessionFactory == null) {
try {
// Create registry builder
StandardServiceRegistryBuilder registryBuilder = new StandardServiceRegistryBuilder();
// Hibernate settings equivalent to hibernate.cfg.xml's properties
Map<String, String> settings = new HashMap<>();
settings.put(Environment.DRIVER, "org.postgresql.Driver");
settings.put(Environment.URL, "jdbc:postgresql://localhost:5432/BORAJI");
settings.put(Environment.USER, "postgres");
settings.put(Environment.PASS, "admin");
settings.put(Environment.DIALECT, "org.hibernate.dialect.PostgreSQL9Dialect");
// Apply settings
registryBuilder.applySettings(settings);
// Create registry
registry = registryBuilder.build();
// Create MetadataSources
MetadataSources sources = new MetadataSources(registry);
// Create Metadata
Metadata metadata = sources.getMetadataBuilder().build();
// Create SessionFactory
sessionFactory = metadata.getSessionFactoryBuilder().build();
} catch (Exception e) {
e.printStackTrace();
if (registry != null) {
StandardServiceRegistryBuilder.destroy(registry);
}
}
}
return sessionFactory;
}
public static void shutdown() {
if (registry != null) {
StandardServiceRegistryBuilder.destroy(registry);
}
}
}
如上例所示,StandardServiceRegistryBuilder
类的applySettings()方法用于加载配置详细信息,这是引导Hibernate应用程序所需的。
第4步 - 创建一个主类并运行应用程序
这是检查数据库版本的主要类。
文件:MainApp.java -
package com.yiibai.tutorial.hibernate;
import org.hibernate.Session;
/**
* @author imssbora
*/
public class MainApp {
public static void main(String[] args) {
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
// Check database version
String sql = "select version()";
String result = (String) session.createNativeQuery(sql).getSingleResult();
System.out.println(result);
session.getTransaction().commit();
session.close();
HibernateUtil.shutdown();
}
}
执行上面示例代码,得到以下结果 -
PostgreSQL 9.6.1, compiled by Visual C++ build 1800, 64-bit