
请问 prepareStatement 在创建完之后需要关闭吗? 我现在的习惯是在连接数据库时将需要执行的 SQL 依次创建 prepareStatement 并放在一个 map 里面,供后续程序调用,今天跟同事讨论起来这个事儿了,同事说我这么干会内存溢出,我说我不是 createStatement 为啥会溢出呢? 所以…请教一下各位基本功扎实的大神们,prepareStatement 需要关闭吗…
1 Citrus 2022-04-22 16:02:43 +08:00 via iPhone 当然不要,这玩意设计出来就是因为了一次解析初始化多次使用的。不然干嘛不用 statement |
2 codefever 2022-04-22 16:43:26 +08:00 可以把每个 sql 的 preparestatement 用 concurrenthashmap 缓存起来, 确保一个 sql 只有一个 preparestatement ,这样会提升性能 |
3 TWorldIsNButThis 2022-04-22 16:46:00 +08:00 via iPhone 什么叫内存溢出 memory overflow ? |
4 anonydmer 2022-04-22 16:59:35 +08:00 “prepareStatement 缓存起来供后学程序调用” 这不会有线程安全问题么? |
5 aguesuka 2022-04-22 17:46:29 +08:00 我猜你同事说的内存溢出和 prepareStatement 没有关系, 而是说你的 map 只创建不施放, 而且 key 不是有限的 |
6 cheng6563 2022-04-22 17:56:16 +08:00 prepareStatement 不是和连接绑定的吗?你事务怎么办? |
7 chendy 2022-04-22 22:55:00 +08:00 这是什么特殊的优化技巧么 statement 也不是很重的对象,现用现获取问题不大,除非是一样的语句,可以稍微挤一点性能出来,但是感觉没必要 顺便一说这 2022 年了还直接撸 statement ,是老系统么…… |