Java持久性API(JPA)是用于在对象和关系数据库之间管理,持久和访问数据的Java规范。 Hibernate是一个实现JPA规范的ORM(对象关系映射)工具。
在这篇文章中,我们将向演示如何使用Hibernate创建或配置简单的JPA应用程序。
此应用使用的技术和工具如下 -
- Hibernate 5.2.6.Final
- JPA 2.1
- Eclipse Mars.2 (4.5.2)
- Maven 3.3.9
- JavaSE 1.8
- MySQL 5.7.12
第1步 - 创建一个maven项目
参考这篇文章学习 - 如何在eclipse中创建maven项目。
第2步 - 将jar依赖关系添加到pom.xml
打开pom.xml
文件并添加所需的Hibernate和MySQL连接器依赖关系。下面是文件: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-jpa-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>
<!-- MySQL connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.5</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步 - 创建一个JPA配置文件
在src/main/java/META-INF
文件夹下创建一个名为persistence.xml
的XML文件,并在其中写入以下代码。
文件:persistence.xml -
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">
<persistence-unit name="PERSISTENCE">
<description> Hibernate JPA Configuration Example</description>
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/BORAJI" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="admin" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>
第4步 - 创建一个JPA助手类
创建一个辅助类来引导JPA EntityManagerFactory
类。
文件:JPAUtil.java -
package com.yiibai.tutorial.hibernate;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
/**
* @author maxsu
*/
public class JPAUtil {
private static final String PERSISTENCE_UNIT_NAME = "PERSISTENCE";
private static EntityManagerFactory factory;
public static EntityManagerFactory getEntityManagerFactory() {
if (factory == null) {
factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
}
return factory;
}
public static void shutdown() {
if (factory != null) {
factory.close();
}
}
}
第5步 - 创建一个主类并运行应用程序
这是使用EntityManager#createNativeQuery方法检查数据库版本的主要类。
文件:MainApp.java -
package com.yiibai.tutorial.hibernate;
import javax.persistence.EntityManager;
/**
* @author maxsu
*/
public class MainApp {
public static void main(String[] args) {
EntityManager entityManager = JPAUtil.getEntityManagerFactory().createEntityManager();
entityManager.getTransaction().begin();
// Check database version
String sql = "select version()";
String result = (String) entityManager.createNativeQuery(sql).getSingleResult();
System.out.println(result);
entityManager.getTransaction().commit();
entityManager.close();
JPAUtil.shutdown();
}
}
执行上面示例代码,得到以下输出结果 -
Hibernate: select version()
5.7.12-log