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

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

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