스프링/스프링 기초DB
-
스프링 예외 추상화스프링/스프링 기초DB 2023. 3. 19. 17:00
예외가 발생했을 때 해당 예외를 그대로 반환하는 것이 아니라 런타임 예외를 따로 만들어서 해당 예외를 반환하는 것이 효율적이다. @Test void duplicateKeySave() { service.create("myId"); service.create("myId"); // 같은 아이디 저장 시도 } @Slf4j @RequiredArgsConstructor static class Service { private final Repository repository; public void create(String memberId) { try { repository.save(new Member(memberId, 0)); log.info("saveId={}", memberId); } catch (MYDuplic..
-
체크 예외, 언체크(런타임) 예외스프링/스프링 기초DB 2023. 3. 19. 14:41
체크 예외(Checked Exception) 체크 예외 : Exception 하위 예외 중 RuntimeException을 제외한 에외 - 체크 예외는 컴파일러가 예외를 체크하는 예외이다. 체크 예외 장점 - 컴파일 오류를 발생시켜 만약에 개발자가 예외처리를 제대로 하지 않았을 때 개발자가 알아차릴 수 있도록 도와준다. 체크 예외 단점 - 개발자가 크게 신경쓰고 싶지 않은 예외까지 반드시 잡거나 던지도록 처리해야 한다. static class MyCheckedException extends Exception { // Exception을 상속받으면 체크 예외 (RuntimeException은 언체크 예외) public MyCheckedException(String message) { super(messag..
-
DB 트랜잭션 - 자동 커밋, 수동 커밋 / DB 락스프링/스프링 기초DB 2023. 3. 14. 18:36
db에 데이터를 저장할 때 커밋이라는 용어가 있다. 데이터를 변경하고 나서 커밋을 해주면 db에 최종 저장이 되어서 다른 사용자가 볼 때에도 저장된 데이터를 볼 수 있다. 맨 위의 set autocommit true;는 자동 커밋으로 변경한다는 뜻인데, default 값이 자동 커밋이기 때문에 사실 생략해도 된다. 위 처럼 자동 커밋을 실행하면 oldId라는 데이터가 db에 저장되어서 다른 세션에서 접근해도 확인할 수 있다. 다음은 수동 커밋 모드이다. 수동 커밋 모드에서는 임시 저장을 하기 때문에 이것을 행한 세션에서는 보이지만 다른 세션에서는 member를 호출해도 볼 수 없다. 이러한 이유는 데이터를 저장할 때 여러 작업을 하나의 묶음으로 생각하기 위해서이다. 만약에 A가 B에게 계좌이체 5000원..
-
DB - 커넥션풀과 DataSource스프링/스프링 기초DB 2023. 3. 14. 16:54
우리가 지금까지 사용했던 서버들은 창을 닫으면 데이터가 날라간다. 그렇기 때문에 데이터베이스를 만들어서 데이터를 저장할 수 있는 공간을 따로 설정해야한다. Connection - 데이터베이스와 연결시켜주는 객체, getConnection을 통해 DB를 연결시켜줌 ResultSet - 쿼리의 결과를 담은 객체 Statement - 정적 쿼리를 전달 Preparedstatement - sql문을 전달 private void close(Connection con, Statement stmt, ResultSet rs) { JdbcUtils.closeResultSet(rs); JdbcUtils.closeStatement(stmt); JdbcUtils.closeConnection(con); // close는 생성과..