JPA是Java Persistence API, 是Java提供的持久层开发的统一API。但是JPA只是定义的规范接口,并没有提供具体实现, JPA的具体实现有Hibernate 、EclipseLink等。
H2是Java开发的开源内嵌数据库, H2数据库不需要安装,直接导入jar 档既可以快速实现数据库的开发,数据可以存储在文件系统或是内存中。H2最大的特点就是轻量、免安装。可以用来快速搭建数据库开发环境,常用来学习和演示。
对于使用Eclipse 集成开发环境的开发者来说, 搭建EclipseLink+H2的组合是学习和验证JPA相关API的快速路径。

环境搭建

  1. 在Eclipse中创建Maven类型的项目
  2. 导入EclipseLink相关的依赖文件
    因为EclipseLink的依赖库文件直接从Maven中央库无法获取, 需要配置如下库地址:
 <repositories><repository><id>jakarta.oss.sonatype.org</id><name>Jakarta OSS Sonatype Staging</name><url>https://jakarta.oss.sonatype.org/content/repositories/staging</url></repository></repositories>

接下来配置EclipseLink的依赖库:

     <dependency><groupId>org.eclipse.persistence</groupId><artifactId>eclipselink</artifactId><version>2.5.2</version><exclusions><exclusion><groupId>org.eclipse.persistence</groupId><artifactId>commonj.sdo</artifactId></exclusion></exclusions></dependency>
  1. 添加H2依赖的配置
     <dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><version>1.4.200</version></dependency>

保存pom.xml 文件后会自动下载相关的jar 库文件, 完成后,项目的机构如下:

  1. 创建JPA 持久化配置文件
    在 src/main/resources 目录下创建META-INF子目录, 并在该子目录创建persistence.xml 文件。 在文件中进行数据源以及实体类的配置。

JPA示例代码

  1. 创建实体类 User, 该实体类只有两个属性id 和 name
  2. 配置persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"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"><persistence-unit name="my_h2"><provider>org.eclipse.persistence.jpa.PersistenceProvider</provider><class>cn.osxm.jpa.entity.User</class><properties><property name="javax.persistence.jdbc.url"value="jdbc:h2:mem:myh2" /><property name="javax.persistence.jdbc.driver"value="org.h2.Driver" /><property name="javax.persistence.jdbc.user" value="root" /><property name="javax.persistence.jdbc.password"value="123456" /></properties></persistence-unit>
</persistence>
  • 这里的数据源使用 H2 数据库
  • 使用内存保存数据的方式,地址是jdbc:h2:mem:myh2 , mem 代表memory
  • 驱动是 org.h2.Driver
  1. 测试代码
/*** @ClassName: JpaDemo* @Description: TODO* @author oscarchen*/
public class JpaDemo {private Connection conn;private Statement stmt;public void initH2Database() throws Exception {String JDBC_URL = "jdbc:h2:mem:myh2";String USER = "root";String PASSWORD = "123456";String DRIVER_CLASS = "org.h2.Driver";Class.forName(DRIVER_CLASS);conn = DriverManager.getConnection(JDBC_URL, USER, PASSWORD);stmt = conn.createStatement();stmt.execute("DROP TABLE IF EXISTS USER");stmt.execute("CREATE TABLE USER(id VARCHAR(10) PRIMARY KEY,name VARCHAR(50))");stmt.executeUpdate("INSERT INTO USER VALUES('001','刘备')");stmt.executeUpdate("INSERT INTO USER VALUES('002','关羽')");stmt.executeUpdate("INSERT INTO USER VALUES('003','张飞')");   }public void close() throws Exception {stmt.close();conn.close();}public void jpaQuery() {EntityManagerFactory emFactory = Persistence.createEntityManagerFactory("my_h2");EntityManager em = emFactory.createEntityManager();List<User> list  = em.createQuery("select u from User u",User.class).getResultList();for(User user:list) {System.out.println(user.toString());}//CriteriaBuilder cb = em.getCriteriaBuilder();//CriteriaQuery(User) cq = cb.cr}public static void main(String[] args) throws Exception {JpaDemo jpaDemo= new JpaDemo();jpaDemo.initH2Database();jpaDemo.jpaQuery();}}
  • initH2Database() 用于初始H2数据库的表以及数据
  • jpaQuery() 进行JPA查询。

补充

  • 关于Eclipse 下搭建EclipseLink 进行JPA开发环境的更多内容可以参考:
    Eclipse下安装EclipseLink进行JPA开发


EclipseLink+H2 快速搭建JPA开发环境相关推荐

  1. SpringMVC学习(二)——快速搭建SpringMVC开发环境(注解方式)

    文章目录 说明 1.工程搭建 2.注解配置 2.1.context:annotation-config说明 2.2.context:component-scan配置说明 2.3.mvc:annotat ...

  2. mybatis注解开发_快速搭建MyBatis开发环境(配置版+注解版)

    下面我们搭建一下MyBaits的开发环境,也就是一个用MyBaits框架访问数据库的例子. 1.项目结构如下 这里搭建的是一个maven项目. 2.引入依赖pom.xml 4.0.0com.suibi ...

  3. 修正《用Docker快速搭建Go开发环境》文章中的一处错误

    上周写的文章<五分钟用Docker快速搭建Go开发环境>,文章发出去后有不少阅读量,而且从后台看的数据 60%的人都读完了.今天我自己用下面命令往 容器里的 Go 项目里下载包时发现了一处 ...

  4. linux开发 stc_在Linux上快速搭建8051开发环境

    在Linux上快速搭建8051开发环境(2018-7-2) 0. 写在开始之前 实验操作系统环境: Ubuntu 16.04 编译器: sdcc SDCC - Small Device C Compi ...

  5. 利用vagrant快速搭建rails开发环境

    为什么80%的码农都做不了架构师?>>>    Deprecated 前言 当我们学习一门新的语言或技术的时候,最麻烦或比较浪费时间的事情就是搭建开发环境.而搭建开发环境与我们将要学 ...

  6. SpringMVC学习(一)——快速搭建SpringMVC开发环境(非注解方式)

    目录 1.开发环境准备 1.1.首先电脑需要安装JDK环境(略) 1.2.准备一个以供开发的tomcat 1.3.准备Maven工具 1.4.准备IDE编译器 1.5.准备一个本地的数据库, 2.搭建 ...

  7. 五分钟用Docker快速搭建Go开发环境

    挺早以前在我写过一篇用 Docker搭建LNMP开发环境的文章:用Docker搭建Laravel开发环境,里面详细介绍了将 nginx. mysql和 php三个容器用 docker-compose编 ...

  8. Windows7/10上快速搭建Tesseract-OCR开发环境操作步骤

    之前在https://blog.csdn.net/fengbingchun/article/details/51628957 中描述过如何在Windows上搭建Tesseract-OCR开发环境,那时 ...

  9. 使用PHP环境一键安装包快速搭建PHP开发环境

    在Windows系统下如何搭建PHP开发环境? 为了快速进入编程状态,顺利地完成第一个PHP程序,我们选择使用PHP集成环境包. 什么是PHP集成环境包?类似的软件又有哪些呢? 要回答这个问题,我们需 ...

最新文章

  1. 阿里研究员:警惕软件复杂度困局
  2. spring-boot-2.0.3之quartz集成,不是你想的那样哦!
  3. SAP CRM代码对数据库表COMM_PRODUCT的读写访问情况明细统计
  4. 蓝桥杯第八届省赛JAVA真题----分巧克力
  5. java中的内存一般分成几部分?
  6. Ros学习笔记(二)创建功能包
  7. 卡拉OK歌词同步播放
  8. C#中获得窗体的句柄
  9. 软件集成测试分析,软件集成测试报告模板
  10. 华为HCIE云计算培训笔记第二天
  11. 网络操作系统与分布式操作系统
  12. 通信原理及系统系列3—— 基于卷积编码的2ASK通信系统设计(非相干解调)
  13. linux安装steam提示没有32位,12.10- 试图安装 Steam 错误: 你缺少以下 32位库,并且 Steam 可能无法运行...
  14. Kubernetes 节点弹性伸缩开源组件 Amazon Karpenter 实践:部署GPU推理应用
  15. 几何公差学习笔记(二)-- 公差带的定义、标注和解释
  16. java计算矩形_用Java实现计算矩形的面积与周长
  17. 转换uptime_王者荣耀角色转换什么时候正式上线_王者荣耀角色转换上线时间-超分手游网...
  18. Ansible Inventory内置参数
  19. android自适应屏幕翻转,Android中正确自适应屏幕翻转
  20. java:布局方法(网格布局)

热门文章

  1. 2016/06/11
  2. Java:基于LinkedList实现栈和队列
  3. 创建完美SDK的10个技巧
  4. http响应状态码大全
  5. Welcome to Swift (苹果官方Swift文档初译与注解八)---53~57页(第二章)
  6. javascript设计模式-抽象工厂模式
  7. [php基础]PHP环境变量$_SERVER和系统常量详细说明
  8. 文本编码与解码问题解决方案
  9. 基础 - 字符读取函数scanf、getchar、gets、cin(清空缓存区解决单字符回车问题)
  10. 解决hadoop no dataNode to stop问题