PostgreSQL Java 教程: 使用 Hibernate 连接到 PostgreSQL

十二月 10, 2023

摘要:在本教程中,我们将讨论如何在 Java 中使用 Hibernate 连接到 PostgreSQL。

什么是 Hibernate?

Hibernate 是用于 JAVA 的对象关系映射(ORM)解决方案。它是一种功能强大、高性能的对象关系持久化和查询服务,适用于任何 Java 应用程序。

Hibernate 将 Java 类映射到数据库表,并将 Java 数据类型映射到 SQL 数据类型,可以将开发人员从 95% 的常见数据持久化相关编程任务中解放出来。

Hibernate 位于传统的 Java 对象和数据库服务器之间,根据适当的 O/R 机制和模式,处理这些对象持久化的所有工作。

Hibernate Position

Hibernate 的优势

  • Hibernate 可以使用 XML 文件将 Java 类映射到数据库表,而无需编写任何代码行。
  • 提供简单的 API,用于直接在数据库中存储和检索 Java 对象。
  • 如果数据库或任何表的结构发生更改,则只需更改 XML 文件属性。
  • 对不熟悉的 SQL 类型进行抽象,并提供一种以熟悉的 Java 对象进行操作的方法。
  • Hibernate 不需要应用服务器即可运行。
  • 操作数据库对象之间复杂的关联。
  • 通过智能获取策略最大限度地减少数据库访问。
  • 提供简单的数据查询。

要将 Hibernate 与 PostgreSQL 连接起来,您需要按照以下步骤操作:

添加必要的依赖项

在项目的构建配置中,包含 Hibernate 和 PostgreSQL 依赖项。如果您使用的是 Maven,请将以下依赖项添加到 pom.xml 文件:

<dependencies>
 <! - Hibernate >
 <dependency>
 <groupId>org.hibernate</groupId>
 <artifactId>hibernate-core</artifactId>
 <version>{hibernate-version}</version>
 </dependency>
 
 <! - PostgreSQL >
 <dependency>
 <groupId>org.postgresql</groupId>
 <artifactId>postgresql</artifactId>
 <version>{postgresql-version}</version>
 </dependency>
</dependencies>

{hibernate-version}{postgresql-version} 替换为要使用的相应版本。

配置 Hibernate 属性

创建一个 Hibernate 配置文件(例如 hibernate.cfg.xml),并指定 PostgreSQL 数据库连接属性。下面是一个示例配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
  "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
 <session-factory>
 <! - Database connection properties >
 <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
 <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/your_database</property>
 <property name="hibernate.connection.username">your_username</property>
 <property name="hibernate.connection.password">your_password</property>
 
 <! - Other Hibernate properties >
 <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
 <property name="hibernate.show_sql">true</property>
 <property name="hibernate.format_sql">true</property>

 <! first time it is create and then onwards update>
 <property name="hbm2ddl.auto">update</property>
 
 <! - Mapping files or annotated classes >
 <! - Add your entity classes or mapping files here  for ex: entity used below >
 <mapping class="org.demo.main.model.Employee"/>
 
 </session-factory>
</hibernate-configuration>

your_databaseyour_usernameyour_password 分别替换为实际的数据库名称、用户名和密码。

创建实体类

定义表示数据库表的实体类。使用适当的 Hibernate 注解对类及其属性进行注解,以将它们映射到相应的数据库表和列。

例如:

@Entity
@Table(name = "employees")
public class Employee {
 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 private Long id;

 @Column(name = "name")
 private String name;

 // Getters and setters, constructors, etc.
}

使用 Hibernate API

在您的代码中,您现在可以使用 Hibernate API 通过定义的实体类与数据库进行交互。例如,可以使用 SessionFactorySession 来执行数据库操作。

下面是如何从数据库中检索所有员工的示例:

SessionFactory sessionFactory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
List<Employee> employees = session.createQuery("FROM Employee", Employee.class).getResultList();
for (Employee employee : employees) {
 System.out.println("ID: " + employee.getId() + ", Name: " + employee.getName());
}
transaction.commit();
session.close();
sessionFactory.close();

请确保在应用程序中正确地处理异常、关闭会话和管理事务。

就是这样!通过这些步骤,您应该能够将 Hibernate 与 PostgreSQL 连接起来,并使用 Hibernate API 执行数据库操作了。