- [ 정리/Spring ][Spring] 스프링 DB 1편 6) 스프링과 문제 해결 - 예외 처리, 반복2023-11-21 09:42:06스프링 DB 1편 데이터 접근 핵심 원리 Session 6 스프링과 문제 해결 - 예외 처리, 반복 1. 체크 예외와 인터페이스 1) 체크 예외와 인터페이스 서비스 계층은 특정 구현 기술에 의존하지 않고 순수하게 유지하는게 좋음 예외에 대한 의존도 해결해야 함 리포지토리가 SQLException을 런타임 예외로 전환해 서비스 계층에 던지면 서비스 계층을 해당 예외를 무시할 수 있어 특정 구현 기술에 의존하는 부분을 제거하고 서비스 계층을 순수하게 유지할 수 있다. 2) 인터페이스 도입 MemberService는 MemberRepository 인터페이스만 의존, 구현 기술을 변경하고 싶으면 DI를 사용해 MemberService 코드 변경 없이 구현 기술만 변경할 수 있다. 3) 체크 예외에 인터페이스 도..
- [ 참고/북마크 ]정규식 연습 사이트2023-11-20 21:35:55https://regexr.com/5mhou#native_link# RegExr: Learn, Build, & Test RegEx RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp). regexr.com 내가 작성한 정규식 설명, 결과도 확인할 수 있음 메뉴에서 정규식 관련 설명도 볼 수 있다
- [ 정리/Spring ][Spring] 스프링 DB 1편 5) 자바 예외 이해2023-11-20 09:05:50스프링 DB 1편 데이터 접근 핵심 원리 Session 5 자바 예외 이해 1. 예외 계층 1) 예외 계층 스프링이 제공하는 예외 추상화를 이해하기 위해 자바 기본 예외에 대한 이해 필요 Object : 예외도 객체이다. 모든 객체의 최상위 부모는 Object 이므로 예외의 최상위 부모도 Object Throwable : 최상위 예외이다. 하위에 Exception과 Error가 있다. Error : 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다. 애플리케이션 개발자는 이 예외를 잡으려고 해서는 안된다. 상위 예외를 catch로 잡으면 그 하위 예외까지 함께 잡는다. 따라서 애플리케이션 로직에서는 Throwable 예외도 잡으면 안 되는데,, 앞서 이야기한 Err..
- [ 정리/Spring ][Spring] 스프링 DB 1편 4) 스프링과 문제 해결 - 트랜잭션(2)2023-11-19 09:40:22스프링 DB 1편 데이터 접근 핵심 원리 Session 4 스프링과 문제 해결 - 트랜잭션 7. 트랜잭션 문제 해결 - 트랜잭션 AOP 이해 1) 프록시 트랜잭션을 편리하게 처리하기 위해 트랜잭션 추상화를 도입하고 반복적인 트랜잭션 로직을 해결하기 위해 트랜잭션 템플릿을 도입했다. 하지만 서비스 계층에 순수한 비즈니스 로직 외에 트랜잭션 처리 로직이 섞여있다. 스프링 AOP를 통해 프록시를 도입해 해결할 수 있다. 트랜잭션 프록시가 트랜잭션 처리 로직을 모두 가져가고 트랜잭션을 시작한 후에 실제 서비스를 대신 호출, 서비스 계층에는 순수한 비즈니스 로직만 남길 수 있다. 프록시를 도입하기 전에는 서비스의 로직에서 직접 트랜잭션을 시작 프록시를 사용하면 트랜잭션을 처리하는 객체와 비즈니스 로직을 처리하는 ..
- [ 정리/Spring ][Spring] 스프링 DB 1편 4) 스프링과 문제 해결 - 트랜잭션(1)2023-11-18 09:25:04스프링 DB 1편 데이터 접근 핵심 원리 Session 4 스프링과 문제 해결 - 트랜잭션 1. 문제점들 1) 애플리케이션 구조 - 프레젠테이션 계층 UI 관련 처리 담당, 웹 요청과 응답, 사용자 요청을 검증 주 사용 기술 : 서블릿과 HTTP 같은 웹 기술, 스프링 MVC - 서비스 계층 비즈니스 로직 담당 주 사용 기술 : 가급적 특정 기술에 의존하지 않고 순수 자바 코드로 작성 - 데이터 접근 계층 실제 데이터베이스에 접근하는 코드 주 사용 기술 : JDBC, JPA, File, Redis, Mongo 등 2) 순수한 서비스 계층 웹 관련 부분, 데이터 저장 기술을 다른 기술로 변경해도 비즈니스 로직은 최대한 변경 없이 유지되어야 한다. 서비스 계층은 특정 기술에 종속적이지 않게 개발해야함 계층을..
- [ 정리/Spring ][Spring] 스프링 DB 1편 3) 트랜잭션 이해(2)2023-11-17 09:34:26스프링 DB 1편 데이터 접근 핵심 원리 Session 3 트랜잭션 이해 7. DB 락 - 개념이해 1) DB 락 세션 1이 트랜잭션을 시작하고 데이터를 수정하는 동안 커밋을 수행하지 않았을 때 세션 2에서 동시에 같은 데이터를 수정하게 되면 트랜잭션의 원자성이 깨지게 된다. 이 문제를 해결하기 위해 세션이 트랜잭션을 시작하고 데이터를 수정하는 동안 커밋이나 롤백을 수행하기 전까지 다른 세션에서 해당 데이터를 수정할 수 없게 막기 위해 데이터베이스는 락이라는 개념을 제공 2) DB 락 동작 1. 세션 1이 memberA의 금액을 500원으로 변경하고 싶고 세션 2는 memberA의 금액을 1000원으로 변경하고자 함(세션 1이 먼저 시작) 2. 세션 1이 트랜잭션을 시작하면서 memberA의 금액을 50..
- [ 정리/Spring ][Spring] 스프링 DB 1편 3) 트랜잭션 이해(1)2023-11-13 09:42:37스프링 DB 1편 데이터 접근 핵심 원리 Session 3 트랜잭션 이해 1. 트랜잭션 개념이해 1) 트랜잭션 데이터베이스를 사용하는 이유는 트랜잭션이라는 개념을 지원하기 때문 데이터베이스에서 트랜잭션은 하나의 거래를 안전하게 처리하도록 보장해 주는 것 모든 작업이 성공해서 데이터베이스에 정상 반영하는 것을 커밋이라고 하고 작업 중 하나라도 실패해서 거래 이전으로 되돌리는 것을 롤백이라고 한다. 2) 트랜잭션 ACID 원자성 Atomicity : 트랜잭션 내에서 실행한 작업은 하나의 작업인 것처럼 모두 성공하거나 모두 실패해야 한다. 일관성 Consistency : 트랜잭션은 일관성 있는 데이터베이스 상태 유지해야 한다. 격리성 Isolation : 동시에 실행되는 트랜잭션이 서로에게 영향을 미치지 않도..
- [ 정리/Java ][자바] 아스키코드2023-11-13 04:20:56대문자 A~Z 65~90 소문자 a~z 97~122 0~9 48~57
- [ 정리/Spring ][Spring] 스프링 DB 1편 2) 커넥션 풀과 데이터소스 이해2023-11-12 09:21:59스프링 DB 1편 데이터 접근 핵심 원리 Session 2 커넥션 풀과 데이터소스 이해 1. 커넥션 풀 이해 1) 데이터베이스 커넥션 획득 과정 1. 애플리케이션 로직은 DB 드라이버를 통해 커넥션을 조회 2. DB 드라이버는 DB와 TCP/IP 커넥션을 연결, 이 과정에서 3-way-handshake 같은 TCP/IP 연결을 위한 네트워크 동작 발생 3. DB 드라이버는 커넥션이 연결되면 ID, PW와 기타 부가 정보를 DB에 전달 4. DB는 ID, PW로 내부 인증을 완료하고 내부에 DB 세션 생성 5. DB는 커넥션 생성이 완료되었다고 응답을 보냄 6. DB 드라이버는 커넥션 객체를 생성해 클라이언트에 반환 ▶ 커넥션을 획득하는 과정이 복잡하고 시간이 많이 소모, DB는 물론이고 애플리케이션 서버..
- [ 정리/Spring ][Spring] 스프링 DB 1편 1) JDBC 이해2023-11-11 09:09:51스프링 DB 1편 데이터 접근 핵심 원리 Session 1 JDBC 이해 1. 프로젝트 생성 1) 프로젝트 생성 https://start.spring.io/ 스프링 부트 3.x 버전부턴 자바 17 이상을 사용 2) 프로젝트 설정 build.gradle에 추가 //테스트에서 lombok 사용 testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' 2. H2 데이터베이스 설정 1) H2 데이터 베이스 설치 https://www.h2database.com/html/main.html 스프링 부트 버전에 맞춰서 다운로드 3. JDBC 이해 1) 애플리케이션 서버와 DB 애플리케이션을 개발할 때 중요한 ..
- [ 정리/Spring ][Spring] 스프링 MVC 1편 7) 스프링 MVC 웹 페이지 만들기(2)2023-11-10 09:22:15스프링 MVC 1편 백엔드 웹 개발 핵심 기술 Session 7 스프링 MVC 웹 페이지 만들기 7. 상품 등록 폼 1) 속성 변경 th:action th:action 상품 등록 폼의 URL과 실제 상품 등록 처리하는 URL을 똑같이 맞추고 HTTP 메서드로 두 기능 구분, 하나의 URL로 등록 폼과 등록 처리를 깔끔하게 처리 가능 상품 등록 폼 Get - /basic/items/add 상품 등록 처리 POST - /basic/items/add 8. 상품 등록 처리 - @ModelAttribute 1) @ModelAttribute @ModelAttribute 이용해 한번에 처리 @PostMapping("/add") public String addItemV2(@ModelAttribute("item") It..
- [ 정리/Spring ][Spring] 스프링 MVC 1편 7) 스프링 MVC 웹 페이지 만들기(1)2023-11-09 09:31:54스프링 MVC 1편 백엔드 웹 개발 핵심 기술 Session 7 스프링 MVC 웹 페이지 만들기 1. 프로젝트 생성 1) 프로젝트 생성 https://start.spring.io/ 스프링 부트 3.x 버전부턴 자바 17 이상을 사용 2. 요구사항 분석 1) 상품 도메인 상품 ID, 상품명, 가격, 수량 2) 상품 관리 기능 상품 목록, 상품 상세, 상품 등록, 상품 수정 3) 서비스 제공 흐름 디자이너 : 요구사항에 맞도록 디자인하고, 디자인 결과물을 웹 퍼블리셔에게 넘김 웹 퍼블리셔 : 디자이너에게 받은 디자인을 기반으로 HTML, CSS를 만들어 개발자에게 제공 백엔드 개발자 : 디자이너, 웹 퍼블리셔를 통해 HTML 화면이 나오기 전까지 시스템을 설계, 핵심 비즈니스 모델 개발하다가 HTML이 나오..