전체 글

티스토리 블로그

    스프링 DB 1편 - 데이터 접근 핵심 원리 - 섹션6. 스프링과 문제 해결 - 예외 처리, 반복

    이제 만들었던 프로젝트에 적용할건데, 컨트롤러에 인터페이스를 사용할거다. 왜 갑자기 사용하냐면 원래 사용할 수 있었지만 인터페이스로 정의한 함수 뒤에 extends throws 해서 덕지덕지 붙이는게 싫어서 그냥 안만들고 쌩 클래스로 한거임. 그래서 이번에 예외처리에서 throws 없애는 김에 인터페이스로 구현하는 거다. 원래는 체크 예외인 SQLException을 런타임 예외로 바꾸기 위한 런타임 예외 db 클래스를 따로 만들자. /** * 예외 누수 문제 해결 * 체크 예외를 런타임 예외로 변경 * MemberRepository 인터페이스 사용 * throws SQLException 제거 */ @Slf4j public class MemberRepositoryV4_1 implements MemberRe..

    PT 6일차 복습 - 다리

    스트레칭 알아서 함 운동 허리 데드리프트는 예정에 없었는데 봐달라고 해서 봐줌. 등에 힘을 준다고 생각하고 내려가면 잘 되는듯. 힘이 엄청 빠져서 자세가 무너진다 싶으면 엉덩이를 더 뒤로 빼라고 함. 내려갈 때 자세가 무너지는 이유가 등의 힘이 부족해서 그런건데, 날개뼈를 뒤로 젖히는, 그러니까 후인을 하는 힘으로 버티면서 내려가고 엉덩이를 더 내리면 일자가 된다. 즉, 이거 하나 하면 다리, 등, 기립근도 같이 운동하는 운동이란 거임 ????? 뭔가를 했는데 기억이 날아갔음 와이드 스쿼트 발판 놓고 올라가서 다리를 대각선으로 놓고 옆으로 벌리면서 내려간다는 느낌으로. 1세트 15번을 3세트로 했음. 혼자선 최대 16kg들을듯. 레그프레스 원래 자기 몸무게만큼 해야하는거 같음. 근데 앞에서 힘을 너무 빼..

    스프링 DB 1편 - 데이터 접근 핵심 원리 - 섹션5. 자바 예외 이해

    앞으로 스프링에서의 예외 배울 건데 개념을 짚고 넘어가자. 자바의 모든 객체는 항상 Object가 부모다. 이건 예외 클래스도 마찬가지. 단지 예외 클래스 시작은 Throwable부터 시작한다고 보면 된다. 여기서 Exception과 Error 자식 클래스로 나뉘는데 Error클래스는 메모리 초과나 컴퓨터의 심각한 오류같은 것이기 때문에 잡으면 안되고 그냥 생기도록 그대로 두어야 한다. 무리해서 더 진행하면 컴퓨터 망가지겠지? 그럼 Exception부터 애플리케이션 관리 영역이다. 실행 전 컴파일러가 잡을 수 있는 에러를 체크예외, 실행 중에 잡을수 있는 에러를 언체크 예외 또는 런타임 예외라고 하는데, Exception부터 자식들은 모두 체크예외지만 그의 자식인 RuntimeException만 예외라고..

    스프링 DB 1편 - 데이터 접근 핵심 원리 - 섹션4. 스프링과 문제 해결 - 트랜잭션

    지금까지 만든 애플리케이션의 문제점을 보자. 애플리케이션 구조는 정해진게 없지만 주로 프레젠테이션, 서비스, 데이터 접근 계층 3가지로 나뉜다. 중요한건 서비스 계층에선 다른 라이브러리등에 의존하지 않고 순수 자바코드로 작성하는 것이다. 그래서 로직을 위한 매개변수를 받기위한 http 통신 사전작업, db에 저장 및 조회를 위한 사전작업 및 더러운 작업들은 모두 프레젠테이션 계층이나 데이터 접근 계층에 맡기고 서비스 계층은 순수한 상태를 유지해야 핵심 서비스를 파악하기 쉽고 유지보수에 용이하다. 근데 현재 우리의 서비스를 봐라 커넥션 때문에 서비스 클래스 안에 db의 라이브러리들이 잔뜩 들어가 있다. 물론 커넥션을 여기서 만들어서 트랜잭션을 관리하는건 맞다. 하지만 순수한 자바의 형태를 유지하지 못하게 ..

    스프링 DB 1편 - 데이터 접근 핵심 원리 - 섹션3. 트랜잭션 이해

    일반 메모장 같은걸로도 저장은 할 수 있다. 근데 하필 왜 데이터베이스를 쓰는가? 그건 트랙젝션을 지원하기 때문이다. 거래인데, 안전하게 거래를 해주는걸 보장해준다. 애초에 거래라는게 하나처럼 보여도 사실 여러개다. 예를들어 A가 B에게 5000원을 입금했을 때 현실로는 그냥 지폐 5000원 주면 되지만 디지털로는 A의 계좌에 5000원을 감소시키고 B의 계좌에 5000원을 증가시키는 2가지 일을 동시에 수행한다. 그럼 만약 A의 계좌에 5000원을 감소시키는건 성공했지만 B의 계좌에 5000원을 증가시키는걸 실패했다면?? 걍 중간에 돈이 날라가고 매우 큰 법적 문제가 생길 수 있음. 그래서 이런 거래를 하나의 작업처럼 만들어서 정상 반영하는걸 커밋(commit)이라고 하고 하나라도 실패해서 거래 이전으..

    스프링 DB 1편 - 데이터 접근 핵심 원리 - 섹션2. 커넥션풀과 데이터소스 이해

    앞에서 해온 방식인데 DriverManager를 통해 getConnection()을 했었다. 그래서 뭔가를 할 때마다 연결하고 닫고 연결하고 닫고.. 드라이버랑 실제 DB랑 연결하는 방식은 http에서 했던 것처럼 TCP/IP 통신이라 3 way handshake같은것들도 다 한 뒤에 연결되면 id, pw 및 부가 정보를 전달하면 db에서 확인하고 검증되었으면 내부에 세션을 생성해서 완료했다는 응답 메시지를 클라이언트한테 보냈다. 이 커넥션 시간도 DB마다 다르다. 이게 원리고 정석이지만, 너무 많은 시간 및 자원 낭비가 있었다. 그래서 커넥션 풀이라고 미리 여러개 연결시켜놓은 뒤 닫지 않고 계속 써먹는거다. 기본적으로 10개 정도 사용한다고 하고, 서버 사용자 상황에 따라 늘리거나 줄인다. 거기다 갯수..

    스프링 DB 1편 - 데이터 접근 핵심 원리 - 섹션1. JDBC 이해

    섹션0의 소개란. 밑부터 섹션1 시작 h2를 스프링의 버전에 맞춰서 설치하고 강의대로 사전세팅해서 정상작동하는걸 확인했다. 들어가기 전에 역사를 좀 알아야 왜 이렇게 개판이고 저건 또 뭔지 이해할 수 있다. DB란 개념은 원래 있었다. 중요한 정보를 보관하는 곳이다. 문제는 각 회사마다 연결해야 하는 방법이 달랐다. 그래서 만약 다른 DB를 쓰게 된다면 코드를 다시 작성해야 했었다. 그래서 나온게 드라이버를 사용하기로 했다. 놀랍게도 각 회사에서 자기가 드라이버용 자바 코드를 짜서 주었다. 그걸 가져다가 사용하기만 하면 되었다. ㅇㅇ 됨. 참고사항은 JDBC의 등장으로 많은 것이 편리해졌지만, 각각의 데이터베이스마다 SQL, 데이터타입 등의 일부 사용법이 다르다. ANSI SQL이라는 표준이 있어서 어느..

    스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 섹션11. 파일 업로드

    지금까지 보내던 HTTP의 enctype 방식은 x-www-form-urlencoded나 application/json 형식이었다. 즉 기껏해야 string이고 구분자도 그냥 편하게 되어있어서 잘 했다. 그런데 바이너리인 파일은 어떻게 보낼 것인가? 만약 이름, 나이, 이미지파일 같은 형식으로 string과 binary파일을 같이 보내야 한다면?? 이런것 때문에 enctype="multipart/form-data" 방식이 나왔다. part라는게 서버 내에서도 중요한가 보다. 다른 string과 함께 이미지 파일 아무거나 binary 형태로 해서 multipart/form-data로 보낸걸 보면 실제 이론에서 배운것처럼 구분자가 있고 각자의 헤더와 내용이 들어있음을 알 수 있다. 컨트롤러에서 받는 requ..

    PT 5일차 - 등

    준비운동 첫째날과 같음 운동 데드리프트 내가 허리에 힘이 없어서 갈수록 등이 말려들어감. 내려갈 때 등 전부에 힘을 준다는 느낌으로 내려가야 하는데 무거운걸 들고있다고 상상하면서 내려가면 좋다. 내릴때 엉덩이를 빼는 이유가 내가 내려놓기 위한 봉을 수직으로 내려놓기 위해 그러는 것. 그래서 뺀 이후로는 그대로 직각으로 내리는데 집중하면 된다. 그래도 완전히 올렸을 때 가슴 운동도 해야하기 때문에 가슴을 든다. 사실 내가 엉덩이의 힘을 앞쪽으로 주고 가슴을 과하게 들어올린다고 생각하는게 옆에서 보면 완전히 수직상태다. 그리고 올릴 때 빠르게 올라가야 함. 원래 근육이 수축할 때 빠르게 가고 팽창할 때 느리게 가야 힘을 주는 운동이 된다. ???(후면 삼각근?) 어디 앉아서 위로 손 올리고 가슴때 배웠던 후..

    PT 4일차 복습 - 다리

    준비운동 조금 일찍 왔더니 다른 사람 운동 봐주고 있어서 첫째날 했던 것과 똑같이 했다. 진짜 운동 오버헤드 스쿼트 일반 스쿼트처럼 다리를 어깨너비 만큼 벌리고 허리도 신경쓰면서 완전히 앉고 일어선다. 이 때 무게?를 들어 손을 끝까지 위로 들고 머리 뒤쪽으로 든 상태로 한다. 3세트 15개 한듯. 런지 앞으로 다리를 벌리고 앞으로 내민 다리는 직각, 뒤 다리는 조금 많이 굽힌다. 그 상태 그대로 밑으로 내려갔다가 올라가는 것이다. 의외로 뒤 다리가 많이 힘들다. 앞에서 힘이 이미 다 빠져서 3세트 양발 각각 8개씩 했었다. 원래는 15개씩 해야 하는 거인듯. 레그익스텐드 첫날과 같음. 내가 힘이 너무 없어서 7kg으로 3세트 10번인가 한 것 같다. 풀어주기 운동 어디 기구 발바닥 부분 붙잡고 팔은 무..