首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

(6)SpringBoot使用JPA访问数据库的常见问题

摘要:本文主要讲解在使用JPA过程中,常见的一些问题和注意事项。

本文主要讲解在使用JPA过程中,常见的一些问题。

1.配置文件

在上一篇中,我们在配置文件中配置jpa时,有如下配置信息:

这里ddl-auto有四种状态:

create: 每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。

create-drop :每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。

update:最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据

model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。

validate :每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

我们需要注意一下,选择合适的类型去配置,不然项目重启后,发现表中数据没了还不知道为什么。

2.注解

注解,我们主要注意实体类上的注解:

@Table(name = "user") 为建表的表名

@Entity 标明为实体类

@Id 主键上一定要有这个标识,不然会出错的

@Transient Entity中不映射成列的字段得加

@GeneratedValue(strategy = GenerationType.IDENTITY) 主键生成策略

这是主键的生成策略,四种方式:

JPA提供的四种标准用法为:TABLE,SEQUENCE,IDENTITY,AUTO。

TABLE:使用一个特定的数据库表格来保存主键。

SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。

IDENTITY:主键由数据库自动生成(主要是自动增长型)

AUTO:主键由程序控制。

3.报错信息

3.1 SSL连接安全错误

此错误需要修改spring.datasource.url的值

修改为

3.2 主键错误

此错误,在实体的主键上添加@Id注解即可。

3.3 乱码问题

如果从数据库查询的数据是乱码,或者插入的数据是乱码,我们在数据库连接上指定一下编码即可;也有可能,是你的数据库编码有问题,两边要对应一下。

3.4 事务错误

在删除的时候,可能会出现事务错误:

我们在持久层上添加上 @Transactional 注解即可。

与其相忘江湖,不如点赞关注

本文为java4all(公众号:java4all)原创

欢迎转载,请注明出处或文末给出二维码

谢谢!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180329G1SQ6L00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券