在Eclipse下搭建JPA项目(HIbernate + MySQL)

Hibernate 作为使用最为广泛的ORM框架, 也是Spring框架默认使用的JPA实现。Hibernate + MySQL组合也是实战开发中使用最为常见的组合。
本篇使用的软件及版本如下:

  • Java: 1.8.0_211
  • 集成开发工具 Eclipse : 2021-06 (4.20.0)
  • Maven: Apache Maven 3.6.1
  • MySQL: 8.0
  • MySQL 管理控制台 : MySQL WorkBench 8.0C
  • JUnit 5

相关软件的安装部分本篇略去,直接开始项目的创建和配置。主要步骤包括

  1. 创建Maven类型的项目
  2. 配置Hibernate依赖
  3. 配置数据库连接和准备测试数据
  4. 创建实体类
  5. 进行单元测试

1. 创建Maven 类型项目

  1. 创建Maven 类型的项目,在Eclipse中点击工具栏 File > New > Project, 选择"Maven Project"
    在这里插入图片描述

  2. 在弹出的窗口选择 “Create a simple Project”, 也就是创建一个简单的项目, 选中这个选项会跳过后面选择项目骨架(archetype)的选择。

在这里插入图片描述

  1. 输入项目名,包名等信息之后, 点击创建

在这里插入图片描述

2. 引入JUnit 5 单元测试依赖包

在pom.xml 中加入:

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.junit</groupId>
				<artifactId>junit-bom</artifactId>
				<version>5.8.2</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<dependencies>
		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

在src/test/java 下创建一个测试文件

/**  
* @Title: JUnit5Tests.java
* @Package com.osxm.jpa.junit
* @Description: TODO
* @author XM
* @date 2022年6月1日 上午7:17:29
* @Copyright: 2022
* @version V1.0  
*/
package com.osxm.jpa.junit;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

public class JUnit5Tests {

	@Test
	public void hello() {
		Assertions.assertTrue(1>0);
	}
}

右键 run as > JUnit Test 能够正常运行则代表运行成功。

3. 导入Hibernate 及JPA的依赖包

Hibernate 作为ORM 框架可以独立的进行数据库相关的开发, 开发方式时配置Hibernate 本身的配置文件。 同时, Hibernate 实习了JPA的接口, 可以使用JPA的配置,而不需要另外的配置。

所以导入Hibernate 作为JPA 实现, 需要导入Hibernate的核心包以及与JPA的整合包,所有这些,通过hibernate-entitymanager就可以一次性导入了, 于是在pom.xml 增加如下配置:

		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-entitymanager</artifactId>
			<version>5.6.9.Final</version>
		</dependency>

4. 导入MySQL 驱动以及创建和准备数据

导入驱动很简单, 在pom.xml 加入:

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.29</version>
		</dependency>

数据库初始化以及插入数据的SQL如下:

-- 创建数据库
create database jpaency;

-- 使用数据库
use jpaency;

-- 创建表
CREATE TABLE USR
(
 id INT NOT NULL COMMENT '主键',
 name varchar(30) NOT NULL COMMENT '姓名',
 PRIMARY KEY (id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 插入数据
INSERT INTO USR(ID,NAME) VALUES(1,'刘备') ;
INSERT INTO USR(ID,NAME) VALUES(2,'关羽') ;
INSERT INTO USR(ID,NAME) VALUES(3,'张飞') ;

5. 创建实体类

定义实体类 Usr , 包含两个属性 id 和 name,使用 @Entity 注解为实体类, 使用@Id注解主键属性。

/**  
* @Title: Usr.java
* @Package com.osxm.entity
* @Description: TODO
* @author XM
* @date 2022年6月3日 上午9:02:19
* @Copyright: 2022
* @version V1.0  
*/
package com.osxm.jpa.entity;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class Usr {
	
	@Id
	private Integer id;
	
	private String name;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}

6. 配置持久化配置,并且将配置需要持久化的类

在 src/main/resources 创建 META-INF目录, 在该目录下创建文件 persistence.xml, 内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
	<persistence-unit name="jpaency_mysql">
		<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
		<class>com.osxm.jpa.entity.Usr</class>
		<properties>
			<property name="javax.persistence.jdbc.url"
				value="jdbc:mysql://127.0.0.1:3306/jpaency" />
			<property name="javax.persistence.jdbc.driver"
				value="com.mysql.jdbc.Driver" />
			<property name="javax.persistence.jdbc.user"
				value="root" />
			<property name="javax.persistence.jdbc.password"
				value="123456" />
		</properties>
	</persistence-unit>

</persistence>
  • persistence-unit 用于配置持久化单元,也就是对应一个数据库连接单元
  • provider 配置JPA 的实现, 这里是Hibernate
  • class 配置需要持久化的类
  • properties, 配置数据库连接的信息, 包括数据库的地址、驱动类、用户名和密码等。

7. 建立测试类并测试

/**  
* @Title: QueryTests.java
* @Package com.osxm.jpa.basic
* @Description: TODO
* @author XM
* @date 2022年6月3日 上午8:53:58
* @Copyright: 2022
* @version V1.0  
*/
package com.osxm.jpa.basic;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

import com.osxm.jpa.entity.Usr;

public class QueryTests {

	@Test
	public void find() {
		EntityManagerFactory emFactory = Persistence.createEntityManagerFactory("jpaency_mysql");
		EntityManager em = emFactory.createEntityManager();
		Usr usr = em.find(Usr.class, 1);
		Assertions.assertEquals("刘备",usr.getName());
		em.close();
		emFactory.close();
	}
}

本篇的项目结构如下图:

在这里插入图片描述

本篇完整的项目地址

https://github.com/osxm/jpa-ency.git



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oscar999

送以玫瑰,手留余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值