전체 글 100

[Spring MVC] 트랜잭션(Transaction)

트랜잭션 여러개의 작업들을 하나의 그룹으로 묶어서 처리하는 처리 단위 전부 성공하든가 전부 실패하든가(All or Nothing) ➡ 데이터 무결성 ACID 원칙 (데이터베이스 트랜잭션이 안전하게 수행되는 것을 보장하기 위한 성질) 원자성: 작업을 더 이상 쪼갤 수 없음 일관성: 비즈니스 로직에서 의도하는대로 일관성있게 저장되거나 변경되는 것 격리성: 여러개의 트랜잭션이 실행될 경우 각각 독립적으로 실행이 되어야 함 지속성: 트랜잭션이 완료되면 그 결과는 지속되어야 함, 물리적인 저장소 트랜잭션 커밋과 롤백 Spring FrameWork에서의 트랜잭션 처리 트랜잭션 로컬 트랜잭션 분산 트랜잭션 Spring에서 사용되는 트랜잭션 방식 선언형 트랜잭션(비즈니스 로직에 애너테이션 추가, AOP방식) 프로그래맹..

[Spring MVC] JPA 연관관계 매핑

1. @ManyToOne(단방향/양방향) 외래키에 해당하는 객체 참조를 가지고 있는 자연스러운 방식 @JoinColumn(name ="") 양방향을 원한다면 @OneToMany 추가 2. @OneToMany 단독으로 잘 사용하지 않음 이유는 아래 블로그 참고 https://wwlee94.github.io/category/blog/spring-jpa-one-to-many-save-issue/ [Spring JPA] 1:N 관계 엔티티 save시 update 쿼리가 추가로 발생하는 이슈 개요 ‘Party-ing’ 프로젝트를 진행하던 도중 관계를 가지는 엔티티를 Save 할 때 2개의 테이블에 데이터는 잘 생성되었으나 Save 쿼리문 뿐 아니라 Update… wwlee94.github.io 3. @ManyTo..

[Spring MVC] JBDC 기반 데이터 엑세스 계층

✅ 학습 목표 JDBC가 무엇인지 이해할 수 있다. Java에서 JDBC가 어떤 역할을 하는지 이해할 수 있다. Spring Data JDBC가 무엇인지 이해할 수 있다. Spring Data JDBC를 이용해서 데이터의 저장, 수정, 조회, 삭제 작업을 할 수 있다. Spring Data JDBC 기반의 엔티티 연관 관계를 매핑할 수 있다 JDBC 정의 JDBC(Java Database Connectivity)는 Java 기반 애플리케이션의 코드 레벨에서 사용하는 데이터를 데이터베이스에 저장 및 업데이트 하거나 반대로 데이터베이스에 저장된 데이터를 Java 코드 레벨에서 사용할 수 있도록 해주는 Java에서 제공하는 표준 사양(또는 명세, Specification) JDBC API 사용 흐름 Sprin..

[Spring MVC] API 계층_DTO(Data Transfer Object)

✅ 학습 목표 DTO(Data Transfer Object) DTO가 무엇인지 이해할 수 있다. DTO를 Controller 클래스에 적용할 수 있다. DTO Validation이 무엇인지 이해할 수 있다. //DTO 예시 public class MemberPostDto { private String email; private String name; private String phone; public String getEmail() { return email; } public String getName() { return name; } public String getPhone() { return phone; } } DTO 정의 클라이언트에서 서버 쪽으로 전송하는 요청 데이터, 서버에서 클라이언트 쪽으로 ..

[Spring MVC] API계층_Controller

✅ 학습 목표 API 엔드 포인트인 Controller 의 구성요소 이해 실제 동작하는 Controller의 기본 기능 구현 Controller 클래스 설계 및 구조 생성 1. 애플리케이션의 경계 설정 2. 애플리케이션 기능 구현을 위한 요구사항 수집 3. 패키지 구조 생성 (Spring Boot에서 계층 기반 패키지 구조보다 기능 기반 패키지 구조 권장) 4. Controller 설계 '클라이언트로부터 발생할 요청에는 어떤 것들이 있을까' REST API 기반의 애플리케이션에서는 애플리케이션이 제공해야 될 기능을 리소스(Resource, 자원)로 분류 리소스에 해당하는 Controller 클래스를 작성하면 됨 5. main() 메서드가 포함된 애플리케이션의 엔트리포인트(Entrypoint, 애플리케이션..

[Spring MVC] 예외처리

1. Spring MVC 에서의 예외처리 - @ExceptionHandler를 이용한 예외처리 애플리케이션에서 예외가 발생했을 때, 내부적으로 spring에서 Response Body를 이용해 에러 정보를 전송 timestamp, status, error, path 위의 내용만으로는 요청 데이터 중에서 어떤 항목이 유효성 검증에 실패했는지 알 수 없음 Controller에 @ExceptionHandler 적용 @ExceptionHandler 인자값으로 HttpStatus 를 받을 수 있음 예외가 발생하면 위의 애너테이션이 추가된 메서드가 예외를 전달받음 getBindingResult().getFieldErrors()를 통해 에러 정보 확인 가능 위에서 얻은 에러 정보를 ResponseEntity를 통해 ..

[Spring MVC] DTO 클래스와 Entity 클래스의 역할 분리 이유

1. 계층별 관심사의 분리 DTO는 컨트롤러 같은 클라이언트 단과 직접 마주하는 계층에서 데이터 교환할 때 쓰이는 자료구조 View 와 Controller 사이에서 데이터를 주고받을 때 활용성이 높음 DTO는 자료구조의 역할만 할 뿐 어떠한 기능 및 동작이 없어야 함 Entity 객체는 실제 DB 테이블과 매핑되는 핵심 클래스 데이터 베이스의 테이블에 존재하는 칼럼들을 필드로 가지는 객체 2. 코드 구성의 단순화 3. REST API 스펙의 독립성 확보 DB로부터 조회된 Entity를 그대로 View로 넘기게 되었을 때 불필요한 정보 및 노출되면 안되는 정보까지 노출되는 것을 막음 (패스워드 같은 원하지 않는 데이터 제외 가능) API 문서로써의 역할 => 유지보수 용이 참고 더보기 https://wil..

[Spring MVC] Spring MVC 아키텍처

✅ 학습 목표 Spring MVC가 무엇인지 알 수 있다. Spring MVC 동작 방식과 구성요소를 이해할 수 있다. Spring MVC란? Spring 모듈 중 웹 계층을 담당하는 몇가지 모듈이 있는데, 그 중 서블릿 API를 기반으로 클라이언트의 요청을 처리하는 모듈 Spring 웹프레임워크 서블릿이란? 클라이언트의 요청을 처리하도록 특정 규약에 맞춰서 Java 코드로 작성하는 클래스 파일 아파치 톰캣은 이러한 서블릿들이 웹 애플리케이션으로 실행이 되도록 해주는 서블릿 컨테이너 중 하나 - Model 클라이언트 요청의 응답으로 돌려주는 작업의 처리 결과 데이터 서비스 계층 비즈니스 로직 - View Model 데이터를 이용해서 웹브라우저 같은 클라이언트 애플리케이션의 화면에 보여지는 리소스를 제공하..

[Spring Core] AOP

✅ 학습목표 AOP의 의미 이해 AOP가 필요한 이유 이해 AOP에서 사용되는 용어들에 대한 이해 타입별 Advice, Pointcut 표현식, JointPoint 등의 의미를 이해 애너테이션을 이용한 AOP에 대한 이해 ▶ AOP가 필요한 이유 sw 개발에서 변경 지점은 하나가 될 수 있도록 잘 모듈화 되어야 함 OOP만 사용해선 여러 곳에서 공통적으로 사용되는 부가 기능의 중복 코드가 발생하게 됨 중복되는 부가 기능에 수정 및 삭제가 필요하게 되면 사용되는 모든 곳에 수정 및 삭제 동작을 해줘야 함 즉, 부가 기능 코드를 깔끔하게 분리하기 힘들기 때문에 핵심 기능과 부가 기능을 분리하는 AOP 방식이 필요 OOP는 모듈화의 핵심 단위: Class AOP의 모듈화의 핵심 단위: Aspect ▶ AOP의..

부트캠프 2달차 KPT 회고

이 짤 쓰고싶었는데 드디어 쓴다 이번 섹션을 기억나는대로 훑자면 알고리즘, 네트워크 기초, 스프링 코어에 대해 배웠다. 배운 내용을 소화하는게 조금 벅차기 시작했다. 특히 스프링 프레임워크 기술은 깊게 들어가자면 한도끝도 없을 것 같아서 앞으로 부트캠프를 따라가는데 지장이 없을 정도로만 학습해 놓은 상태이다. 이번 회고는 KPT 방식을 권고하길래 해보고자 한다. KPT를 기반으로한 개인 회고 목표 상기하기 Keep, Problem 작성하기 Try 작성하기 우선순위 정하기 1. 목표 상기하기 목표를 상기하기 위한 질문 현재 ‘내'가 학습을 통해 이루고자 하는 것은 무엇인가요? 내년 인턴 합격 + 인턴 후 취업 여러분이 현재 바라는 목표를 모두 이루었다면 ‘나'는 어떻게 변해 있을까요? 사회에서 생산/소비 ..