Spring Boot + Spring Data JPA + PostgreSQL
最近在用Java重写之前实习生用.netcore写的微信后台应用。
规定用Spring Boot框架,PostgreSQL数据库。之前一直习惯于基于XML的Spring app,也没用过PostgreSQL,再加上数据库设计的不好,还没有任何代码文档,一脸的懵逼。。。
这里记录下在重写过程中遇到的一些问题,便于后期查阅:
1. PostgreSQL 9.6.6:
(1) 使用pgAdmin4, 首先遇到的问题就是启动过慢,所占内存大,在连接本地数据库后执行简单的select耗时不少。个人认为启动过慢,所占内存大是pgAdmin4的问题,但执行SQL语句慢,估计是配置的问题,目前还没有在postgresql.conf中找到对应的配置项
(2) 对表名,列名不区分大小写,但是却都转成小写再运行sql。这就导致如下的sql,
select * from Question
变成
select * from question
再运行,然后PostgreSQL去找question表,发现没有(因为建的是Question表...),报错:
ERROR: relation "question" does not exist
LINE 1: select * from Question
解决办法:表名,列名均加上"", 如
select * from "Question"
(3) 因为没有访问server上目录的权限,导致通过pgAdmin没办法备份/还原
解决办法:
1. 创建各个表

2. 导出表数据到本地

3. 导入数据到数据库表
COPY "Question"("QuestionID","QuestionName","QuestionType","QuestionItem")
FROM 'C:\Users\~\Question.csv' DELIMITER ',' CSV HEADER;
注意外键和数据导入顺序。
2. Spring Data JPA:
在使用Spring Data JPA之前,用过Hibernate+JPA注解和Mybatis这样的ORM框架。个人理解Spring Data JPA就是在Hibernate和JPA的基础上又封装了一层,定义了像@Query, @Modifying这样的注解以及CrudRepository这样的接口,极大方便Dao层的开发。
我把我在开发过程中查找的一些blog放在这里,方便以后查阅。
spring-boot-crudrepository-example
要是想快速上手,可以考虑直接参照第一篇blog写。
(1) 在使用Spring Data JPA编写Dao层时,可以直接定义业务接口,并且只需要继承CrudRepository或者JpaRepository(后者继承自前者)就能实现基本的crud操作
(2) JpaRepository相比较于CrudRepository,多了分页的功能
(3) Spring Data JPA根据方法名及规则,生成SQL语句
(4) JPQL类似Hibernate的HQL
这里我还是得记录下开发过程中遇到的一对多,多对一的问题和如何使用。
在项目里,可以不使用类似一对多,多对一的注解,但是就得需要在代码中通过一次变多次SQL查询 / 写join SQL语句的方式达到相同的效果,相比之下注解更加简单。在Spring Data JPA中,@OneToMany, @ManyToOne这样的关系型注解,说到底还是Hibernate的实现。

在同一个数据库字段被多个类属性映射时,需要设置insertable = false, updateable = false.
在用Intellij IDEA写JPQL时,注意不要让编辑器自带的JPQL检查给糊弄了,并不准确,建议关掉JPQL检查。
3. Spring Boot
没的说,一堆资料,HERE
Done!
Spring Boot + Spring Data JPA + PostgreSQL的更多相关文章
- 初识在Spring Boot中使用JPA
前面关于Spring Boot的文章已经介绍了很多了,但是一直都没有涉及到数据库的操作问题,数据库操作当然也是我们在开发中无法回避的问题,那么今天我们就来看看Spring Boot给我们提供了哪些疯狂 ...
- 【实验一 】Spring Boot 集成 hibernate & JPA
转眼间,2018年的十二分之一都快过完了,忙于各类事情,博客也都快一个月没更新了.今天我们继续来学习Springboot对象持久化. 首先JPA是Java持久化API,定义了一系列对象持久化的标准,而 ...
- 使用spring boot中的JPA操作数据库
前言 Spring boot中的JPA 使用的同学都会感觉到他的强大,简直就是神器一般,通俗的说,根本不需要你写sql,这就帮你节省了很多时间,那么下面我们来一起来体验下这款神器吧. 一.在pom中添 ...
- 基于Spring Boot,使用JPA动态调用Sql查询数据
在<基于Spring Boot,使用JPA操作Sql Server数据库完成CRUD>,<基于Spring Boot,使用JPA调用Sql Server数据库的存储过程并返回记录集合 ...
- 基于Spring Boot,使用JPA调用Sql Server数据库的存储过程并返回记录集合
在上一篇<基于Spring Boot,使用JPA操作Sql Server数据库完成CRUD>中完成了使用JPA对实体数据的CRUD操作. 那么,有些情况,会把一些查询语句写在存储过程中,由 ...
- Spring Boot + Spring Data + Elasticsearch实例
Spring Boot + Spring Data + Elasticsearch实例 学习了:https://blog.csdn.net/huangshulang1234/article/detai ...
- 255.Spring Boot+Spring Security:使用md5加密
说明 (1)JDK版本:1.8 (2)Spring Boot 2.0.6 (3)Spring Security 5.0.9 (4)Spring Data JPA 2.0.11.RELEASE (5)h ...
- 256.Spring Boot+Spring Security: MD5是加密算法吗?
说明 (1)JDK版本:1.8 (2)Spring Boot 2.0.6 (3)Spring Security 5.0.9 (4)Spring Data JPA 2.0.11.RELEASE (5)h ...
- Spring Boot+Spring Security:获取用户信息和session并发控制
说明 (1)JDK版本:1.8(2)Spring Boot 2.0.6(3)Spring Security 5.0.9(4)Spring Data JPA 2.0.11.RELEASE(5)hiber ...
- Spring Boot/Spring Cloud
104.什么是 spring boot? 在Spring框架这个大家族中,产生了很多衍生框架,比如 Spring.SpringMvc框架等,Spring的核心内容在于控制反转(IOC) ...
随机推荐
- SpringBoot基础之MockMvc单元测试
SpringBoot创建的Maven项目中,会默认添加spring-boot-starter-test依赖.在<5分钟快速上手SpringBoot>中编写的单元测试使用了MockMvc.本 ...
- Java语言编码规范 - Java语言编码规范(中文版)(http://doc.javanb.com/code-conventions-for-the-java-programming-language-zh/index.html)
目录 1 介绍 1.1 为什么要有编码规范 1.2 版权声明 2 文件名 2.1 文件后缀 2.2 常用文件名 3 文件组织 3.1 Java源文件 3.1.1 开头注释 3.1.2 包和引入语句 ...
- 常用工具篇(二)死链接扫描工具–Xenu
一个网站上线一段时间之后,可能出现很多的死链接,死链接就是那些打不开的链接,或者是请求是404的,可能是因为有的文件位置移动了,或者有的功能不好使了,可能会影响我们网的功能,我们就要隔一阵扫描一下网站 ...
- Vue开发之路由进阶
1.路由组件传参 在一个页面中,需要根据路由获得参数,然后在页面进行逻辑处理,可以通过$route来获取相关参数 但是这样一来,页面组件与路由耦合太高,为了解耦,页面组件可以在更大程度上进行复用,可以 ...
- GPP加密破解工具gpp-decrypt
GPP加密破解工具gpp-decrypt GPP是Group Policy Preferences(组策略首选项)的缩写,这是一个组策略实施工具.通过该工具,网络管理员可以实现更多的网络管理,如驱 ...
- SpringBoot 整合 RabbitMQ(包含三种消息确认机制以及消费端限流)
目录 说明 生产端 消费端 说明 本文 SpringBoot 与 RabbitMQ 进行整合的时候,包含了三种消息的确认模式,如果查询详细的确认模式设置,请阅读:RabbitMQ的三种消息确认模式 同 ...
- Java开发笔记(一百零二)信号量的请求与释放
前面介绍了同步与加锁两种并发处理机制,虽然加锁比起同步要灵活一些,但是加锁在某些高级场合依然力有未逮,包括但不限于下列几点:1.某块代码被加锁之后,对其它线程而言就处于繁忙状态,缺乏弹性的阈值范围:2 ...
- Tomcat、MySQL的安装与配置
JAVA环境配置 下载安装jdk(Java Development Kit) 配置安装环境 右键计算机——>属性——>高级系统设置——>环境变量——>新建 变量名: JAVA ...
- down
Description 给出一个数列,求出这个序列的最长下降子序列的长度及方案数,子序列中的权值完全相同视为同一个序列 Input 第一行一个整数n,接下来一行n个整数表示序列的权值 Output 一 ...
- JSP页面顶端出现错误:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path的问题解决
原理:把RunTime容器添加进去,比如tomcat的. 1.项目右键->[Build Path]->[Configure Build Path...] 2.把tomcat的runtime ...