본문 바로가기

jdbc5

[Spring] 스프링의 일관된 예외처리 스프링에서 제공하는 데이터 접근 객체는 데이터 접근 기술을 쉽고 일관된 방법으로 사용하게 만들고자 하는 목적을 갖고 있습니다. 덕분에 데이터 접근 기술을 변경이 쉽죠. 그 중에서도 각 기술이 변경되더라도 에러 처리에 대한 걱정을 하지 않아도 되는 부분이 발군입니다. 이번 포스팅에서는 스프링이 어떤 방식으로 일관된 예외처리를 제공하는지 살펴보고자 합니다. 일관된 예외 계층 구조 스프링은 데이터 접근 기술 중심적인 예외를 일관된 방법으로 처리하는 것을 지원합니다. 아래 코드를 통해 간단히 살펴보겠습니다. jdbcTemplate에서 update 메서드를 이용하면 JdbcOperation에서 상속한 update를 이용하여 쿼리를 날립니다. JDBC api의 executeUpdate를 써서 만약 에러가 발생하면 .. 2022. 5. 12.
[Spring] NamedParameterJdbcTemplate 사용하기 NamedParameterJdbcTemplate Spring에서는 데이터에 접근하는 기능으로 JdbcTemplate을 구현한 다양한 구현체를 갖고 있습니다. 이번 포스팅에서는 JdbcTemplate 를 구현한 구현체인 NamedParameterJdbcTemplate 를 사용할 때 얻을 수 있는 편리함에 대해 글을 작성해보고자 합니다. NamedParameterJdbcTemplate 는 Jdbc를 사용할 때 생기는 ? 코드를 대체하고자 래핑한 클래스입니다. NamedParameterJdbcTemplate 가 sql 쿼리를 만드는 전략은 추가해야 할 파라미터가 많을 때 코드 작성을 정말 편리하게 만들어 줍니다. 직접 코드를 작성해보면 이 편리함을 느낄 수 있습니다. 간단하게 우테코 crew들의 정보를 관리할.. 2022. 4. 21.
[레벨 1 돌아보기] dao 테스트 중 lock wait? 레벨 1에서의 학습목표와는 조금 동떨어진 이야기지만.. Dao를 테스트 하는 과정에서 어떤 에러를 만났습니다. com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction 에러를 확인해보니 락을 획득하기 위한 시간이 초과되어 트랜잭션을 다시 시작하라 라고 말합니다. 어떤 상황이기에 이 에러가 발생했고, 이 문제를 어떻게 해결하는지 적어보고자 합니다. 락 발생 db의 커밋 모드 설정을 수동 커밋 모드로 전환하면 특정 쿼리가 실행되는 순간 해당 세션에서 트랜잭션이 열립니다. 이를 트랜잭션 a라고 칭하겠습니다. 트랜잭션 a는 다른 트랜잭션으로 부터 격리하고 트.. 2022. 4. 15.
[Java] db 테스트 체스 5단계는 JDBC api를 사용해서 mysql db와 연동하는 미션입니다. 미션을 수행하면서 가장 핵심적인 고민이 두가지 있었는데요. Dao 레이어를 어떻게 테스트할까? Service 레이어도 결국 Dao를 사용하는데 여기는 어떻게 테스트 하지? 과거 Spring Boot에 ORM으로 JPA를 사용하는 환경에서는 aop인 @Transactional 애노테이션이 테스트 코드에서는 데이터를 롤백해줬기 때문에 데이터베이스에 테스트용 값이 무차별적으로 들어가는 것을 막을 수 있었습니다. 하지만 JDBC는 그렇지 않죠. 그렇다면 위 두 가지 고민을 왜 하는지 먼저 생각해보겠습니다. 운영 db에 무차별적으로 데이터가 들어가는게 싫음 제어할 수 없는 상황에 대한 Test를 해야함 제어할 수 없는 상황에 대한 T.. 2022. 4. 2.
[Java] JDBC API Statement vs PreparedStatement 오늘 제이슨의 수업에서 mysql을 docker container에 올려 실행하는 방법과 간단한 jdbc api 사용법, sql 문법에 대해 배웠습니다. 수업 진행 중 제이슨이 "Statement 와 PreparedStatement가 있는데 차이는 누가 블로그에 올리겠죠." 라고 했고 저는 이 블로그 각을 놓칠 수 없었습니다. 옛날에 JDBC를 공부하던 때의 기억을 되살려 한 번 Statement vs PreparedStatement를 비교하여 포스팅을 해보고자 합니다. 원문은 baeldung 에서 확인할 수 있고 이 포스팅은 원문을 조금 이해하기 쉽게 설명하고자 합니다.. Statement vs PreparedStatement JDBC API에는 두가지 인터페이스가 존재합니다. (인터페이스의 구현체는 .. 2022. 3. 29.