• 请不要在回答技术问题时复制粘贴 AI 生成的内容
heavyrainn
V2EX  ›  程序员

学废了: JDBC 的 prepareStatement 需要关闭吗?

  •  
  •   heavyrainn · Apr 22, 2022 · 2683 views
    This topic created in 1658 days ago, the information mentioned may be changed or developed.

    请问 prepareStatement 在创建完之后需要关闭吗? 我现在的习惯是在连接数据库时将需要执行的 SQL 依次创建 prepareStatement 并放在一个 map 里面,供后续程序调用,今天跟同事讨论起来这个事儿了,同事说我这么干会内存溢出,我说我不是 createStatement 为啥会溢出呢? 所以…请教一下各位基本功扎实的大神们,prepareStatement 需要关闭吗…

    7 replies  •  2022-04-22 22:55:00 +08:00
    Citrus
    Citrus
    Apr 22, 2022 via iPhone
    1
    当然不要,这玩意设计出来就是因为了一次解析初始化多次使用的。不然干嘛不用 statement
    codefever
    codefever
    Apr 22, 2022
    2
    可以把每个 sql 的 preparestatement 用 concurrenthashmap 缓存起来, 确保一个 sql 只有一个 preparestatement ,这样会提升性能
    TWorldIsNButThis
    TWorldIsNButThis
    Apr 22, 2022 via iPhone
    3
    什么叫内存溢出
    memory overflow ?
    anonydmer
    anonydmer
    Apr 22, 2022
    4
    “prepareStatement 缓存起来供后学程序调用” 这不会有线程安全问题么?
    aguesuka
    aguesuka
    Apr 22, 2022
    5
    我猜你同事说的内存溢出和 prepareStatement 没有关系, 而是说你的 map 只创建不施放, 而且 key 不是有限的
    cheng6563
    cheng6563
    Apr 22, 2022
    6
    prepareStatement 不是和连接绑定的吗?你事务怎么办?
    chendy
    chendy
    Apr 22, 2022
    7
    这是什么特殊的优化技巧么
    statement 也不是很重的对象,现用现获取问题不大,除非是一样的语句,可以稍微挤一点性能出来,但是感觉没必要
    顺便一说这 2022 年了还直接撸 statement ,是老系统么……
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1293 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 20:01 · PVG 04:01 · LAX 12:01 · JFK 15:01
    ♥ Do have faith in what you're doing.