实习日记(4-20)SQL状态码、数据库连接池

33 篇文章 2 订阅
8 篇文章 0 订阅

小记

DB2与Hibernate,插入数据

在数据插入的时候报错:

DB2 SQL Error: SQLCODE=-407, SQLSTATE=23502, SQLERRMC=TBSPACEID=2, TABLEID=791, COLNO=0, DRIVER=4.21.29

去SQL状态码查了查
在这里插入图片描述
是非空字段放入了空值,嗯?
在这里插入图片描述
加入断点调试,daoimpl中的实体类变量存在数据啊,而且五个字段都存在数据?什么情况?去数据库中看一下。

将Hibernate代码打印到控制台
在这里插入图片描述
怎么会是default,id字段咋回事?先复制到数据库中看一下
在这里插入图片描述
跑一下果然还是报了-407错误,应该是id字段的原因
修改一下id再次插入,报错-803,查一下
在这里插入图片描述
小问题,这个之前插入了一次了,主键重复
这下搞清楚问题出在哪了,就是 插入的时候 id搞成了default,所以插入失败

搞定了:这个主键设置自增长的时候设置的是native,而主键是字符型,这个地方出错了,把主键字段修改成assigned属性,跑起来了

DB2和Hibernate,更新数据

好嘛,更新又蹦bug了
我把add方法中的save改为了saveOrUpdate,然后它在数据库中不更新数据了,但是控制台打印的sql语句还是有的,也不报错

应该是事务没有提交的原因
这里淘到一篇博客:
https://blog.csdn.net/seed227/article/details/8160328

看项目实例

公司分发我们项目实例让我们参照学习,其中常用的方法都封装好了,这两天准备翻看源码并进行调试,尝试加入功能;程序跑不起来,数据库配置的问题。

proxool
proxool是什么?它是为了解决什么而产生的?

proxool是一种数据库连接池,何为数据库连接池?

数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。

有这么几个关键词:分配、管理、释放、数据库连接

连接池基本思想:
连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。而连接的建立、断开都由连接池自身来管理。同时,还可以通过设置连接池的参数来控制连接池中的初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等。也可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。

我的理解呢就是:数据库相当于是一个水缸,连接相当于舀子,没有引入连接池的概念的时候呢,每次盛水都要用一个舀子,资源浪费;而引入了连接池的概念呢,就是我在水缸里挨个放舀子,规定最多最少多少个且多久不用就拿回来,几个人轮换着用,节省资源。

数据库连接池的作用及思想差不多知道一点了。该proxool了

Proxool:是一个Java SQL Driver驱动程序,提供了对选择的其它类型的驱动程序的连接池封装。可以非常简单的移植到现存的代码中,完全可配置,快速、成熟、健壮。可以透明地为现存的JDBC驱动程序增加连接池功能。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值