본문 바로가기

2022/06

(3)
PreparedStatement 의 clearParameters() 는 불필요..? 하나의 PreparedStatement 로, 여러개의 쿼리를 실행(또는 하나의 쿼리로 파라미터를 바꾸면서 여러번 실행)할 때.. 이전에 세팅했던 파라미터를 모두 클리어 하는 용도입니다만.. 필요가 없을듯 하네요. 물론, 넣어도 상관은 없는데.. 동시 사용자가 갑자기 많아진다 했을 때, 이게 여러번 실행되면.. 실행되지 않았을 때에 비해 아무래도 그 만큼의 퍼포먼스를 잡아 먹게 됩니다. 물론, GC 를 위해 사용한다는 분도 있던데, 불필요한 것은 마찬가지. 기술되는 순간 시스템은 그만큼 느려진다는.. 다만, 파라미터 갯수가 바뀌는 시점에서는 사용해야 함.. ㅠ 다른 의견 있으시면, 댓글 바랍니다. #1 finally 에서 각종 요소를 초기화 할 때..? ... try{ ... }catch(Exception..
오라클 varchar2(4000) 과 한글의 오묘한 만남..? 원문1 : https://javafreak.tistory.com/98 원문2 : http://egloos.zum.com/realcool/v/2585694 SQLInjection 을 막기 위해, PreparedStatement 를 사용하는 것이 기본이겠죠. DB 칼럼에 varchar2(4000) 이 있고, 한글 2000 자를 insert 또는 update 하려 할 때.. 에러가 발생합니다, 글자를 너무 많이 입력했다공.. 이것은, 오라클이.. setString() 을 사용할 때 한글을 UTF-8 로 자동변환 하면서, 한글 1글자를 3bytes 로 인식하기 때문이라네요. 이걸 JDBC 버그라 말하기도 하는데, Statement 를 사용할 때는 setString() 으로 진행해도, 한글 2000자가 잘 들어가..
Collections 안에 다른 Collections 을 넣었을 때의 GC * Hashtable 안에 다른 Hashtable 을 넣었을 때의 GC (List 안에 Hashtable 을 넣는 것이 바람직할듯..) Hashtable ht1 = null; Hashtable ht2 = null; try{ ht1 = new Hashtable(); ht2 = new Hashtable(); ht2.put("test2","test3"); // ht2 에는 문자열인 "test3" 세팅 ht1.put("test1, ht2); // 자, ht1 에 ht2 를 넣었으니... }catch(Exception e){ }finally{ System.out.println("+++.ht1:"+ht1); // +++.ht1:{test1={test2=test3}} // 여기서는 테스트를 위한 것이지만, 실전에선 ..