最近在用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

spring data jpa的使用

spring data jpa查询

JPQL

要是想快速上手,可以考虑直接参照第一篇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的更多相关文章

  1. 初识在Spring Boot中使用JPA

    前面关于Spring Boot的文章已经介绍了很多了,但是一直都没有涉及到数据库的操作问题,数据库操作当然也是我们在开发中无法回避的问题,那么今天我们就来看看Spring Boot给我们提供了哪些疯狂 ...

  2. 【实验一 】Spring Boot 集成 hibernate & JPA

    转眼间,2018年的十二分之一都快过完了,忙于各类事情,博客也都快一个月没更新了.今天我们继续来学习Springboot对象持久化. 首先JPA是Java持久化API,定义了一系列对象持久化的标准,而 ...

  3. 使用spring boot中的JPA操作数据库

    前言 Spring boot中的JPA 使用的同学都会感觉到他的强大,简直就是神器一般,通俗的说,根本不需要你写sql,这就帮你节省了很多时间,那么下面我们来一起来体验下这款神器吧. 一.在pom中添 ...

  4. 基于Spring Boot,使用JPA动态调用Sql查询数据

    在<基于Spring Boot,使用JPA操作Sql Server数据库完成CRUD>,<基于Spring Boot,使用JPA调用Sql Server数据库的存储过程并返回记录集合 ...

  5. 基于Spring Boot,使用JPA调用Sql Server数据库的存储过程并返回记录集合

    在上一篇<基于Spring Boot,使用JPA操作Sql Server数据库完成CRUD>中完成了使用JPA对实体数据的CRUD操作. 那么,有些情况,会把一些查询语句写在存储过程中,由 ...

  6. Spring Boot + Spring Data + Elasticsearch实例

    Spring Boot + Spring Data + Elasticsearch实例 学习了:https://blog.csdn.net/huangshulang1234/article/detai ...

  7. 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 ...

  8. 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 ...

  9. 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 ...

  10. Spring Boot/Spring Cloud

    104.什么是 spring boot?         在Spring框架这个大家族中,产生了很多衍生框架,比如 Spring.SpringMvc框架等,Spring的核心内容在于控制反转(IOC) ...

随机推荐

  1. Educational Codeforces Round 10——B. z-sort

    B. z-sort time limit per test 1 second memory limit per test 256 megabytes input standard input outp ...

  2. [USACO11DEC] Grass Planting (树链剖分)

    题目描述 Farmer John has N barren pastures (2 <= N <= 100,000) connected by N-1 bidirectional road ...

  3. UGUI 点击穿透问题

    unity上 用 做游戏欢迎界面上通用的ui,然后导到游戏里面直接用,但发现游戏里面是用ngui的,点击ugui 的ui 会穿透过去 ngui会响应,原本模型的点击处理也会响应 我用的 unity 版 ...

  4. 【CF1017A】The Rank(签到)

    题意:给定n个人的4门课成绩,排名按总分,保证总分互不相同,求1号名次 n<=1e3,a[i],b[i],c[i],d[i]<=1e2 思路: #include<cstdio> ...

  5. 转 C++构造函数、析构函数、虚函数之间的关系

    C++构造函数.析构函数.虚函数之间的关系 1. 如果我们定义了一个构造函数,编译器就不会再为我们生成默认构造函数了.2. 编译器生成的析构函数是非虚的,除非是一个子类,其父类有个虚析构,此时的函数虚 ...

  6. perfect-scrollbar 轻量级滚动插件

    它是一个轻量级的jquery插件. 需要引入的文件: css: #box { position: absolute; overflow: hidden; height: 200px; width: 2 ...

  7. 更新YUM源后的arning: rpmts_HdrFromFdno: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY错误

    yum源更新后需要导入key值,否则报错如下,无法安装相关的包. Totalsize:42M DownloadingPackages: warning:rpmts_HdrFromFdno:Header ...

  8. Unity3D Shader 入门之简单案例的实现(通过法线实现颜色变化)

    在没有接触Unity3D  Shader 之前,总感觉shader特别神奇,因为听说是对渲染流水线进行编程,就是对GPU进行编程.听着特别高大上.这不,最近刚刚接触Shader,学了几个小案例,然后本 ...

  9. Linux下安装python3.3.2及configrue、make、make install

    一.安装python3.3.2 raspberry的/usr/local/src目录没有权限,可执行如下命令 pi@raspberrypi:~$ sudo chmod -R 777 /usr/loca ...

  10. Light oj 1134 - Be Efficient (前缀和)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1134 题意: 给你n个数,问你多少个连续的数的和是m的倍数. 思路: 前缀和取 ...