스프링/스프링 DB 1편 - 데이터 접근 핵심 원리
-
스프링과 문제 해결 - 예외 처리, 반복스프링/스프링 DB 1편 - 데이터 접근 핵심 원리 2024. 2. 12. 20:12
체크 예외와 인터페이스 서비스 계층은 가급적 특정 구현 기술에 의존하지 않고, 순수하게 유지하는 것이 좋다. 이렇게 하기위해서는 예외에 대한 의존도 함께 해결해야한다 예를 들어서 서비스가 처리할 수 없는 SQLException에 대한 의존을 어떻게 제거해야할까? 서비스가 처리할 수 없으므로 런타임 예외로 처리해서 서비스계층에 던지면 된다. 인터페이스 도입 이렇게 인터페이스를 도입하면 MemberService는 MemberRepository 인터페이스에만 의존하면 된다. 이제 구현 기술을 변경하고 싶으면 DI(의존성 주입)를 사용해서 MemberService 코드의 변경 없이 구현 기술을 변경할 수 있다. 왜 이런 인터페이스를 SQLException의 경우에는 쓰지 않을까? SQLException은 체크예..
-
자바 예외 이해스프링/스프링 DB 1편 - 데이터 접근 핵심 원리 2024. 2. 9. 20:48
예외 계층 스프링이 제공하는 예외 추상화를 이해하기 위해서는 먼저 자바 기본 예외에 대한 이해가 필요하다. 예외는 자바 언어의 기본 문법에 들어가기 때문에 대부분 아는 내용일 것이다. 예외의 기본 내용을 간단히 복습하고, 실무에 필요한 체크 예외와 언체크 예외의 차이와 활용 방안에 대해서도 알아보자. Object : 예외도 객체이다. 모든 객체의 최상위 부모는 Object이므로 예외의 최상위 부모도 Object이다. Throwable : 최상위 예외이다. 하위에 Exception과 Error가 있다. Error : 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다. 애플리케이션 개발자는 이 예외를 잡으려고 해서는 안된다. 상위 예외를 catch로 잡으면 그 하위 예..
-
스프링과 문제 해결 - 트랜잭션스프링/스프링 DB 1편 - 데이터 접근 핵심 원리 2024. 2. 8. 20:59
여러가지 애플리케이션 구조가 있지만 많이 사용되는 방법은 역할에 따라 3가지 계층으로 나누는 것이다. 프레젠테이션 계층 UI와 관련된 처리 담당 웹 요청과 응답 사용자 요청을 검증 주 사용 기술: 서블릿과 HTTP같은 웹 기술, 스프링 MVC 서비스 계층 비즈니스 로직을 담당 주 사용 기술: 가급적 특정 기술에 의존하지 않고, 순수 자바 코드로 작성 데이터 접근 계층 실제 데이터베이스에 접근하는 코드 주 사용 기술: JDBC, JPA, File, Mongo... 이중 가장 중요한 곳은 바로 핵심 비즈니스 로직이 들어있는 서비스 계층이다. 시간이 흘러서 UI(웹)과 관련된 부분이 변하고, 데이터 저장 기술은 다른 기술로 변경해도, 비즈니스 로직은 최대한 변경업이 유지되어야 한다. 이렇게 하기 위해서는 서비..
-
트랜잭션스프링/스프링 DB 1편 - 데이터 접근 핵심 원리 2024. 2. 7. 20:32
트랜잭션 - 개념 이해 데이터를 저장할 때 단순히 파일을 저장해도 되는데, 데이터베이스에 저장하는 이유는 무엇일까? 여러가지 이유가 있지만, 가장 대표적인 이유는 바로 데이터베이스는 트랜잭션이라는 개념을 지원하기 때문이다. 트랜잭션을 이름 그대로 번역하면 거래라는 뜻이다. 이것을 쉽게 풀어서 이야기하면, 데이터베이스에서 트랜잭션은 하나의 거래를 안전하게 처리하도록 보장해주는 것을 뜻한다. 그런데 하나의 거래를 안전하게 처리하려면 생각보다 고려해야 할 점이 많다. 예를 들어서 A의 5000원을 B에게 계좌이체한다고 생각해보자. A의 잔고를 5000원 감소하고, 잔고를 5000원 증가해야 한다. 계좌이체는 A의 잔고 감소와 B의 잔고 증가가 하나의 작업처럼 동시에 일어나야 한다. 잔고 감소까지는 성공했는데 ..
-
커넥션풀과 데이터소스 이해스프링/스프링 DB 1편 - 데이터 접근 핵심 원리 2024. 2. 6. 20:45
커넥션 풀 이해 데이터베이스 커넥션을 매번 획득 데이터베이스 커넥션을 획들할 때 다음과 같은 과정을 취한다 1. 애플리케이션 로직은 DB드라이버를 통해 커넥션을 조회한다 2. DB 드라이버는 DB와 TCP/IP 커넥션을 연결하고, 이과정에서 3 way handshake 같은 TCP/IP 연결을 위한 네트워크 동작이 발생한다. 3. DB 드라이버는 TCP/IP 커넥션이 연결되면 ID, PW와 기타 부가정보를 DB에 전달한다. 4. DB는 ID, PW를 통해 내부 인증을 완료하고, 내부에 DB세션을 생성한다. 5. DB는 커넥션 생성이 완료되었다는 응답을 보낸다. 6. DB는 커넥션 객체를 생성해서 클라이언트에 반환한다. 매번 이러한 과정을 통해서 새롭게 생성하는건 결과적으로 응답 속도에 영향을 끼친다. 이..
-
JDBC 이해스프링/스프링 DB 1편 - 데이터 접근 핵심 원리 2024. 2. 6. 20:21
애플리케이션을 개발할 때 중요한 데이터는 대부분 데이터베이스에 보관한다. 클라이언트가 애플리케이션 서버를 통해 데이터를 저장하거나 조회하면, 애플리케이션 서버는 다음 과정을 통해서 데이터베이스를 사용한다. 1. 커넥션 연결 : 주로 TCP/IP를 사용해서 커넥션을 연결한다. 2. SQL 전달 : 애플리케이션 서버는 DB가 이해할 수 있는 SQL을 연결된 커넥션을 통해 DB에 전달한다. 3. 결과 응답 : DB는 전달된 SQL을 수행하고, 그 결과를 응답한다. 애플리케이션 서버는 응답 결과를 활용한다. 각각의 데이터베이스 마다 커넥션을 연결하는 방법, SQL을 전달하는 방법, 그리고 결과를 응답하는 방법이 모두 달랐다. 하지만 관계형 데이터베이스는 수십개가 있다. 이로써 2개의 큰 문제가 발생한다. 1. ..