博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Data JPA(二):SpringBoot集成H2
阅读量:5882 次
发布时间:2019-06-19

本文共 5066 字,大约阅读时间需要 16 分钟。

H2是Thomas Mueller提供的一个开源的、纯java实现的关系数据库。

前言

本篇文章引导你使用Spring BootSpring Data JPA集成H2内存数据库。更多关于H2数据参考:

准备

  • JDK 1.8 或更高版本
  • Maven 3 或更高版本

技术栈

  • Spring Data JPA
  • Spring Boot

目录结构

pom.xml

jpa-example
cn.merryyou
1.0-SNAPSHOT
4.0.0
h2-webconsole
UTF-8
1.8
org.springframework.boot
spring-boot-starter-data-jpa
com.h2database
h2
1.4.196
org.projectlombok
lombok
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-maven-plugin
org.apache.maven.plugins
maven-compiler-plugin
3.6.1
1.8
1.8
复制代码

实体类

User
@Entity@Table(name = "t_user")@Datapublic class User {    @Id    @GeneratedValue(strategy = GenerationType.IDENTITY)    private Long id;    private String name;    private String url;    @Override    public String toString() {        return "User{" +                "id=" + id +                ", name='" + name + '\'' +                ", url='" + url + '\'' +                '}';    }}复制代码
  • @Table声明此对象映射到数据库的数据表,通过它可以为实体指定表(talbe),目录(Catalog)和schema的名字。该注释不是必须的,如果没有则系统使用默认值(实体的短类名)。

  • @Id 声明此属性为主键。该属性值可以通过应该自身创建,但是Hibernate推荐通过Hibernate生成

  • @GeneratedValue 指定主键的生成策略。

    1. TABLE:使用表保存id值
    2. IDENTITY:identitycolumn
    3. SEQUENCR :sequence
    4. AUTO:根据数据库的不同使用上面三个
  • @Column 声明该属性与数据库字段的映射关系。

AddressRepository
public interface UserRepository extends JpaRepository
{}复制代码

Spring Data JPA包含了一些内置的Repository,实现了一些常用的方法:findonefindallsave等。

application.yml
spring:  datasource:    url: jdbc:h2:mem:h2test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE    platform: h2    username: sa    password:    driverClassName: org.h2.Driver  jpa:    database-platform: org.hibernate.dialect.H2Dialect    hibernate:      ddl-auto: update    properties:      hibernate:        show_sql: true        use_sql_comments: true        format_sql: true  h2:    console:      enabled: true      path: /console      settings:        trace: false        web-allow-others: falselogging:  level: debug复制代码
连接配置

application.yml文件中对数据库进行连接配置

  • spring.datasource.url=jdbc:h2:mem:h2test,配置h2数据库的连接地址
  • spring.datasource.driver-class-name=org.h2.Driver,配置JDBC Driver
  • spring.datasource.username=sa,配置数据库用户名
  • spring.datasource.password=,配置数据库密码

当你完成依赖和连接配置这两步之后,你就可以在程序种使用h2了。spring会自动帮你完成DataSource的注入。

数据初始化配置

如果你需要在程序启动时对数据库进行初始化操作,则在application.properties文件中对数据库进接配置

  • spring.datasource.schema=classpath:db/schema.sql,进行该配置后,每次启动程序,程序都会运行resources/db/schema.sql文件,对数据库的结构进行操作。
  • spring.datasource.data=classpath:db/data.sql,进行该配置后,每次启动程序,程序都会运行resources/db/data.sql文件,对数据库的数据操作。

该配置非常适合开发环境,我会把数据库的结构构建sql放在resources/db/schema.sql,数据sql放在resources/db/data.sql中。这样每次运行程序我都可以得到一个新的数据库。这样就不需要我每次为了测试而修改数据中的内容了。

h2 web consloe配置

h2 web consloe是一个数据库GUI管理应用,就和phpMyAdmin类似。程序运行时,会自动启动h2 web consloe。当然你也可以进行如下的配置。

  • spring.h2.console.settings.web-allow-others=true,进行该配置后,h2 web consloe就可以在远程访问了。否则只能在本机访问。
  • spring.h2.console.path=/h2-console,进行该配置,你就可以通过YOUR_URL/h2-console访问h2 web consloeYOUR_URL是你程序的访问URl
  • spring.h2.console.enabled=true,进行该配置,程序开启时就会启动h2 web consloe。当然这是默认的,如果你不想在启动程序时启动h2 web consloe,那么就设置为false。
UserRepositoryTest
@SpringBootTest@RunWith(SpringRunner.class)@Slf4jpublic class UserRepositoryTest {    @Autowired    private UserRepository userRepository;    @Test    public void saveTest() throws Exception {        User user = new User();        user.setName("郑龙飞");        user.setUrl("http://merryyou.cn");        User result = userRepository.save(user);        log.info(result.toString());        Assert.assertNotNull(user.getId());    }    @Test    public void findOneTest() throws Exception{        User user = userRepository.findOne(1l);        log.info(user.toString());        Assert.assertNotNull(user);        Assert.assertTrue(1l==user.getId());    }}复制代码
h2 web consloe

代码下载

从我的 github 中下载,


???关注微信小程序java架构师历程 上下班的路上无聊吗?还在看小说、新闻吗?不知道怎样提高自己的技术吗?来吧这里有你需要的java架构文章,1.5w+的java工程师都在看,你还在等什么?

转载地址:http://qgpix.baihongyu.com/

你可能感兴趣的文章
劣质代码评析——猜数字问题(上)
查看>>
纸上谈兵: 栈 (stack)
查看>>
Windows phone8 基础篇(三) 常用控件开发
查看>>
Oracle学习笔记之五,Oracle 11g的PL/SQL入门
查看>>
大叔手记(3):Windows Silverlight/Phone7/Mango开发学习系列教程
查看>>
考拉消息中心消息盒子处理重构(策略模式)
查看>>
so easy 前端实现多语言
查看>>
【追光者系列】HikariCP源码分析之ConcurrentBag&J.U.C SynchronousQueue、CopyOnWriteArrayList...
查看>>
在navicat中如何新建连接数据库
查看>>
canvas系列教程05-柱状图项目3
查看>>
css绘制几何图形
查看>>
HTML标签
查看>>
理解JS中的Event Loop机制
查看>>
转载:字符编码笔记:ASCII,Unicode和UTF 8
查看>>
修复看不懂的 Console Log
查看>>
Android跨进程通信 AIDL使用
查看>>
ajax常见面试题
查看>>
结合kmp算法的匹配动画浅析其基本思想
查看>>
vue进行wepack打包执行npm run build出现错误
查看>>
【d3.js v4基础】过渡transition
查看>>