JDBC가 왜 등장했을까?우리는 웹브라우저나 APP으로부터 중요한 정보를 DB에다가 저장해놓는다.그러나, 애플리케이션 서버와 DB를 직접 커넥팅하면1\. 커넥션 연결: TCP/IP로 커넥션 2. SQL 전달 3. 결과응답 이러한 과정으로 로직이 수행되는데문제는 이 DB
클라이언트가 요청을 보낼때 마다 데이터베이스 커넥션을 맺으면 매우 비효율적일 것이다. TCP/IP 커넥션을 생성하기위해서 리소스를 매번 사용하는것은 매우 비효율적.그래서 이 문제를 해결하기 위해서 커넥션을 미리 생성해두고 사용하는 커넥션 풀이라는 방식이다.커넥션 풀에
데이터 베이스에서 트랜잭션은 하나의 요청을 안전하게 처리하도록 보장해주는것을 뜻한다.A의 5000원을 B한테 이체A의 잔고 5000원감소 -> B의 잔고 5000원 증가.그런데 1번만 성공하고 2번은 실패하면 문제, 고로 트랜잭션기능을 사용하면 1,2 둘다 성공해야 저
Object: 예외도 객체다. 모든 객체의 최상위 부모는 Object이다.Throwable: 최상위 예외. 하위에 Exception과 Error가있음Error: 메모리부족, 심각한 시스템 오류같이 복구 불가능한 예외 -> 개발자는 이 예외를 잡으려 하면 안된다.Exce
이전 글에서 보면, Service가 Repository에 종속적인것을 볼 수 있다.Service에서 Repository repository = new Repository()로 직접 생성해서 사용중이다.DI를 사용해볼것인데,이런식으로 인터페이스를 만들고, 이런식으로 하면
JdbcTemplate 적용 이전에 메모리에다가 인스턴스를 올릴때는 이런식으로 Map을 사용했다. 그러나 이제 DB로 H2를 사용하고 -> 해당 DB에 접근하기 위해서 JDBC 기술을 사용할 것이다. 해당 내용은 이 글을 참고 DB 이제 H2를 사용해서 JDBC 기
main-application.propertiestest - application.propertiestest에서도 db에 접근하기 위해서 url과 username을 작성한다.TestSpringBootTest가 있으면 @SpringBootApplication을 찾아서 설
JdbcTemplate보다 더 많은 기능을 제공하는 SQL Mapper이다.동적쿼리를 매우 편리하게 작성할 수 있어서 사용한다.application.properties 설정인터페이스 만들기인터페이스 구현코드여기서 자세히 해당 로직을 알 필요는 없다. 다만 동적쿼리부분이
CRUD코드를 반복해서 짜야한다.자바객체 -> SQL로 변환하고SQL -> 자바객체로 변환하고 반복적인 코드들이 너무 많다.객체와 관계형 데이터베이스의 차이점이 있다.상속 만약 Album을 저장하려면, 객체를 분해 하여, Item에 해당하는 insert문과, Album
앞서 이 글에서 스프링이 제공하는 트랜잭션 기능이 왜필요하고, 어떻게 동작하는지 알아보았다.스프링 트랜잭션 추상화JDBC와 JPA의 트랜잭션 코드가 서로 다르다.따라서 서비스에서 트랜잭션을 수행할때, JDBC -> JPA로 바꾸면 서비스의 모든 코드를 뜯어 고쳐야한다.
트랜잭션의 필요성1\. 스프링 트랜잭션 추상화JDBC와 JPA의 트랝개션 코드가 서로 다르다.서비스에서 트랜잭션 수행시, JDBC -> JPA면 서비스 모든 코드를 뜯어 고쳐야함스프링 PlatformTransactionManager라는 인터페이스로 트랜잭션 추상화인터페
일단 스프링은 PlatformTransactionManager를 통해서 트랜잭션을 수행하는데,원래는 DataSource를 자동으로 가져와서 PlatformTransactionManager의 구현체를 자동으로 등록하는데,여기서는 PlatformTransactionMana
이번 글은 해당 포스트를 (https://velog.io/@ad_astra/%EB%8B%A8%EC%9D%BC%EC%84%9C%EB%B2%84-%EC%BA%90%EC%8B%9C%EC%82%AC%EC%9A%A9해당 요청을 보내니까, 이러한 문제가 발생하였다.@Po