Burninghering's Blog
article thumbnail
Spring - @Transactional
Spring 2023. 2. 14. 21:24

출처 : @Transactional 어노테이션의 이해 나는 보통 서비스 코드에 @Transactional 어노테이션을 활용해준다. 그런데 사실 뜻도 잘 모르고 좋다고 그래서 쓴거라...지나고 보니 정확히 설명하기가 어려웠다. 그런고로, 해당 어노테이션의 작 kafcamus.tistory.com 예를 들어보자. 만약 내가 쇼핑 앱을 켜서 상품을 구매하려고 한다. 그런데 내가 결제를 하는 짧은 시간 사이에 아래와 같은 일이 벌어지면 어떨까? 해당 판매자가 상품의 가격을 바꿔버려서, 잘못된 금액이 결제됨 같은 상품을 다른 사람도 구매해서, 상품 재고는 1개인데 2명에게 결제됨 결제가 완료되기 직전에 네트워크가 끊겨서, 돈은 나갔지만 구매완료는 되지 않음 아무래도 황당할 수밖에는 없다. 위의 예외적 상황을 막기..

article thumbnail
Spring - MVC 패턴의 이해_HTTP 메시지(Response) (1)
Spring 2023. 2. 12. 19:14

MVC 패턴을 이해하기 위해, 클라이언트와 서버 간 규약인 HTTP - Response에 대해 설명하고 있습니다. ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ Server 에서 HTML 을 내려 줄 때 정적(static) 웹 페이지 내려주기 1. Controller가 Client 의 요청을 "Model"로 받아 처리 예시) 회원가입을 위한 개인 정보들 (id, password, name) 2. Client 에게 "View(정적 웹 페이지, HTML)"를 내려줌 동적(dynamic) 웹 페이지 내려주기 1. Controlle가 Client 의 요청을 "Model"로 받아 처리 2. Template en..

article thumbnail
Spring - 생성자 생성 어노테이션
Spring 2023. 1. 28. 00:21

@NoArgsConstructor / @RequiredArgsConstructor / @AllArgsConstructor 를 구분합니다. ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ 구분 표 @NoArgsConstructor 파라미터가 없는 기본 생성자를 생성 @RequiredArgsConstructor final이나 @NonNull인 필드 값만 파라미터로 받는 생성자 생성 @AllArgsConstructor 모든 필드 값을 파라미터로 받는 생성자 생성 예시 @NoArgsConstructor @AllArgsConstructor @Getter public class Pro..

Repository를 선언할 때 final을 붙이는 이유
Spring 2022. 11. 23. 02:15

컨트롤러를 만들다가, 문득 왜 repository를 선언할 때 final을 붙이는 지 이해가 되지 않았다. 스파르타에서는 Service 클래스를 만들 때에도 repository를 선언하는데, 라고 주석을 달아놓았다. 꼭 필요한 녀석이었다면 "선언"만으로 해결이 되는 것 아닌가? package com.example.sparta_4.controller; import com.example.sparta_4.domain.Product; import com.example.sparta_4.repository.ProductRepository; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; i..

article thumbnail
추상 클래스와 인터페이스의 차이, 모듈의 뜻
Spring 2022. 11. 23. 00:37

Spring, Java 에 관해서 알게된 것들 1 Interface와 Abstract Method 의 차이, final과 static final의 차이 velog.io 위 블로그에 상세하게 차이점이 나와있다! 결론은 추상 클래스는 1개만 상속 가능 인터페이스는 다중 상속 가능 추상 클래스는 대표적인/공통적인 것을 표현할 때 사용, 인터페이스는 구성하는 요소들이 자주 바뀔 때 사용 1) 모듈 : 클래스, 패키지, 라이브러리와 같이 프로그램을 구성하는 임의의 요소 기능별로 나눠진 것을 모듈이라고 하며, 이렇게 소프트웨어를 각 기능(모듈)로 나누는 것을 모듈화 2) 자바 언어에서의 모듈 : 여러 클래스들의 모음 -> 패키지 -> 여러 패키지들의 모음 -> 모듈 (자바 : 모듈 > 패키지 > 클래스) 3) 기타..

Domain이란?
Spring 2022. 11. 21. 00:45

https://doing7.tistory.com/79 Domain, Entity, Value(Object) Spring 프로젝트 중에 Domain, Entity, VO(value object)라는 용어들이 반복적으로 등장하지만, 정작 이들의 차이를 모르고 있다는 생각이들었다. 이에 관련되어 더 공부하고자 DDD START 도메인 주도 설계(최 doing7.tistory.com 위 블로그에 아주 상세하게 잘 설명되어 있다. 한 마디로 소프트웨어로 해결하고자 하는 "문제 영역" (여러가지가 존재)

Repository 만들기와 정렬 방법(최신순/수정된 시간 순)
Spring 2022. 11. 15. 21:00

package com.example.sparta_3.domain; import org.springframework.data.jpa.repository.JpaRepository; import java.time.LocalDateTime; import java.util.List; //쿼리 메소드 리턴 타입은 Page, Slice, List 와 같은 Collection 형태 // 엔티티에서 ()에 해당하는 값을 조회해서 List 컬렉션 타입으로 리턴 public interface MemoRepository extends JpaRepository { //JpaRepository 상속, Memo라는 녀석의 id가 Long인 녀석 //수정 전 // List findAllByOrderByModifiedAtDesc();..

article thumbnail
Query Method 쿼리 메소드란?
Spring 2022. 11. 15. 20:53

Query Method 사용하려는 Repository에 JpaRepository만 상속해주면 스프링의 AOP 기능을 사용하여 구현까지 자동으로 해준다. 간단한 문법으로 객체의 CRUD가 가능하다. 기본적으로 find + "객체" + By + "변수" 로 사용하는데. 중간에 객체는 생략 가능하다. List findByItemNm(String itemNm) -> itemNm 변수명을 사용해서 해당하는 모든 객체를 가져온다. List findByPriceLessThan(Integer price) -> price 변수보다 높은 객체들을 모두 가져온다. 출처 : https://velog.io/@simgyuhwan/%EC%BF%BC%EB%A6%AC-%EB%A9%94%EC%86%8C%EB%93%9C-JPQL-Quer..