본문 바로가기

TroubleShooting2

[Spring] bean scope prototype TroubleShooting (feat, connection) 빈 생명주기에 관해서 그래도 기본은 알고있다고 생각했는데 큰 오산이었다. 운영에 반영을 했는데 몇 일 뒤 최대 Connection을 초과해서 장애가 발생하였다. 원인은 Connection close가 되지 않아서였다. AS-IS TO-BE 왜?? 소스를 어떻게 짰길래?? 샘플 소스로 확인해보자. AServiceImpl는 매번 새로운 커넥션을 맺고 사용이 끝나면 자원을 close 하는 역할을 하고 있다. common.xml에 Impl 클래스를 prototype으로 빈을 등록해놓았다. 그리고 다른 클래스에서 매번 새로운 인스턴스로 사용하기 위해서 beanFactory에서 getBean을 통해 직접 해당 클래스를 가져왔다. @Autowired private AutowireCapableBeanFactory be.. 2021. 1. 19.
[Trouble Shooting] 오라클 '' 과 null SELECT * FROM test a LEFT JOIN example b ON a.ID = b.ID WHERE a.ID = 000000 AND b.flag = 'Y' AND NVL(a.ERROR_CODE, '') NOT in ('',' ','--'); 이런 쿼리가 있었는데 ERROR_CODE가 있음에도 불구하고 출력이 되지 않았다. 왜??? 오라클에서 길이가 없는 문자열(aka empty string, white space, blank)은 null 로 취급된다. 즉, 필드에 들어있는 값이나 '' 문자 또는 함수가 반환하는 값이 길이가 없는 문자열이라면 null 로 취급된다. 이러한 특징은 다른 DBMS 와 다르므로 주의해야 한다. SELECT NVL(null, '') FROM DUAL; // null 그.. 2020. 3. 3.