토비
-
4장) 4.1 예외Java & Spring/토비의 스프링 3.1 2021. 6. 17. 17:11
4장 예외 4.1 사라진 SQLException 스프링의 JdbcTemplate을 적용하면서 throws SQLException 선언이 적용 후에 사라졌다. 초난감 예외처리 예외가 발생하면 catch 블록을 써서 잡는 것은 좋지만 아무 것도 하지 않고 넘어가는 것은 위험 프로그램 실행 중 어디에서 오류가 있는지 모른채 무시하고 계속 진행하기 때문 조치를 취할 방법이 없다면 잡지 말고 throws를 메소드 밖으로 던지고 자신을 호출한 코드에 예외처리 책임을 전가하는 것이 차라리 낫다 실행 창에 로그나 메시지로 남기는 경우 다른 수많은 로그나 메시지에 금방 묻힘 예외 처리 시, 반드시 지켜야할 핵심 원칙 복구되든지 작업을 중단시키고 운영자 or 개발자에게 분명하게 통보돼야함 무의미하고 무책임한 throws ..
-
3장) 3.6 스프링의 JdbcTemplate~ 3.7 정리Java & Spring/토비의 스프링 3.1 2021. 6. 17. 17:10
3장 템플릿 3.6 스프링의 JdbcTemplate 스프링 제공 템플릿/콜백 JdbcContext를 JdbcTemplate로 수정 update() 메소드 createPreapredStatement() 메소드와 대응되는 메소드로, SQL 문장만 파라메터 전달함으로써 사용 add 메소드와 대응되는 콜백으로 사용하는 경우, 바인딩할 파라미터를 순서대로 전달 queryForInt() 메소드 ResultSetExtractor는 PreparedStatement 쿼리를 실행해서 얻은 ResultSet을 전달받는 콜백 콜백을 만들고 익명 내부 클래스를 복잡하게 설정 JdbcTemplate에서 제공하는 queryForInt 메소드를 사용 스프링에서 제공하는 클래스지만 DI 컨테이너를 필요로 하지 않음 queryForOb..
-
3장) 3.4 컨텍스트와 DI ~ 3.5 템플릿과 콜백Java & Spring/토비의 스프링 3.1 2021. 6. 11. 16:44
3장 템플릿 3.4 컨텍스트와 DI JdbcContext의 분리 전략 패턴 구조 UserDao의 메소드가 클라이언트 익명 내부 클래스로 만들어진 것이 개별적인 전략 jdbcContextWithStatementStrategy 메소드가 Context JDBC의 일반적인 작업 흐름을 가지고 있는 컨텍스는 다른 DAO에서도 사용 가능 ~> 분리 시켜보자 클래스 분리 JdbcContext가 DataSource에 의존 ~> DataSource 타입 빈을 DI 받게 변경 생성자를 통해 DataSource 주입 빈 의존관계 변경 클래스 분리로 인해 UserDao는 JdbcContext에 의존하고 있지만, JdbcContext는 구체 클래스 스프링 DI는 인터페이스를 사이에 두고 의존 클래스를 바꿔 사용하는게 목적 하지..
-
3장) 3.1 다시 보는 초난감 DAO ~ 3.3 JDBC 전략 패턴의 최적화Java & Spring/토비의 스프링 3.1 2021. 6. 11. 16:43
3장 템플릿 개방 폐쇄 원칙 확장에는 자유롭게 열려 있고 변경에는 굳게 닫혀 있다. 3.1 다시 보는 초난감 DAO 2장에서 Test와 관련해서 DB 연결과 관련된 여러 개선 작업을 진행했지만, 예외상황 처리 부분이 미흡하다. 이를 개선해보자. 예외처리 기능을 갖춘 DAO JDBC는 예외가 발생한 경우에도 리소스를 반드시 반환해야함 Connection Pool에서 리소스를 받아와 사용하기 때문에, 반환을 제대로 해주지 않은 리소스가 많아져서 connection pool에서 리소스가 부족하다는 치명적인 Exception이 발생할 수 있음 public void deleteAll() throws SQLException { try (Connection c = dataSource.getConnection(); P..