[JPA] find date between 날짜 사이 찾기
·
Programming/Spring
@Entity(name = "test_jojo") @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Jojo { @Id @GeneratedValue @Column(name = "jo_id") private Long joId; @Column private LocalDateTime regDate; } public interface JojoRepository extends JpaRepository { List findAllByRegDateBetween(LocalDateTime start, LocalDateTime end); } public void test() { LocalDateTime startDatetime = LocalDat..
[JPA] Entity와 Repository의 관계, Repository의 기본 메서드/추가 메서드
·
Programming/Spring
Entity클래스를 작성했다면 Repository 인터페이스를 만들어야 한다. 스프링부트에서는 Entity의 기본적인 CRUD가 가능하도록 JpaRepository 인터페이스를 제공한다. public interface MemberRepository extends JpaRepository { } Spring Data JPA에서 제공하는 JpaRepository 인터페이스를 상속하기만 해도 되며, 인터페이스에 따로 @Repository등의 어노테이션을 추가할 필요가 없다. JpaRepository를 상속받을 때는 사용될 Entity 클래스와 ID 값이 들어가게 된다. 즉, JpaRepository 가 된다. Repository의 기본 메서드 / 추가 메서드 기본 제공 메서드 기능 save() 레코드 저장 (..
@Controller와 @RestController의 차이
·
Programming/Spring
@RestController의 동작방식 @RestController 는 @Controller 어노테이션과 @ResponseBody 어노테이션을 합쳐놓은 어노테이션이다. 클래스 상단에 @RestController 어노테이션을 선언하면 Method마다 @ResponseBody를 붙여 주지 않아도 된다. 즉 동일한 동작을 한다고 말할 수 있다. @Controller와 @RestController 방식의 차이점을 알아보자. 스프링 Controller는 일반적으로 View Page 이름을 리턴해주어 사용자에게 뷰페이지를 출력하게 해준다. 그림을 보면 어떤 흐름으로 동작하는지 볼 수 있다. 사용자의 요청이 오면 등록된 ViewResolver를 통해 사용자에게 text/html 타입의 응답을 보내주게 된다. @Con..
SpringMVC Controller 생성하기
·
Programming/Spring
1. MVC ▶ 개요 - MVC(Model View Controller)란 하나의 디자인 패턴이다. - 스프링 MVC : 스프링이 제공하는 웹 어플리케이션 구축 전용 MVC 프레임워크. 1. 모델(Model) : 비즈니스 규칙을 표현 2. 뷰(View) : 프레젠테이션을 표현 3. 컨트롤러(Controller) : 위 두가지를 분리하기 위하여 양측 사이에 배치된 인터페이스 이번 포스팅은 MVC의 개념을 설명하는 포스팅은 아니기에 이정도만 작성하고, 그 첫번째로 스프링 부트에서 Controller 생성 하는 방법을 알아보려 한다. ▶ Controller란? - Controller에 대해 간단히 말하자면 MVC에서 C에 해당 하며 주로 사용자의 요청을 처리 한 후 지정된 뷰에 모델 객체를 넘겨주는 역할을 한..
@Transactional 이란?
·
Programming/Spring
[ Transaction의 탄생 배경 ] 보다 복잡한 프로그램을 개발하다 보면 쿼리 한 줄로 해결할 수 없는 로직을 처리해야 하는 경우가 많습니다. 여러 개의 쿼리가 처리되는 상황에서 문제가 생겨버린다면 시스템에 큰 결함을 남기게 됩니다. 예를 들어 쇼핑몰 서비스를 구현한다고 하면 아래와 같은 로직은 한 줄로 처리하는 것이 불가능합니다. 먼저 쇼핑몰에서 상품을 구매할 때 회원의 잔여 금액이 충분한지 확인하고 잔여 금액이 상품 가격보다 높을 때 구매 로직으로 넘어가야 합니다. 그리고 상품의 재고가 있는지 확인 후에 회원의 잔여 금액을 상품 가격만큼 감소시키고 로직을 종료해야 합니다. 그런데 선택상품구매 단계에서 Exception()이 발생하여 상품이 없음에도 불구하고 있다고 판단하였거나 잔여 금액이 감소하..
@ReqeustBody와 @ResponseBody 언제 사용할까?
·
Programming/Spring
서론 스프링에서 비동기 처리를 하는 경우 @RequestBody 와 @ReponseBody 를 사용합니다. 여기서는 좀 더 자세하게, 위 어노테이션을 사용하여 어떻게 비동기 처리를 할 것인지에 대해서 배워보겠습니다. 클라이언트와 서버의 비동기 통신 처리 웹에서 이루어지는 데이터를 가져오고, 전송하는 이러한 동작들은 클라이언트(Client)와 서버(Server)간의 통신이 이루어지기 때문에 가능합니다. 예를들어 우리가 브라우저에서 검색 키워드를 입력하고 검색 버튼을 누르게 되면 검색 키워드가 클라이언트(ex. Js)를 통해 서버(ex. Java)로 전송이되며 서버에서 검색 키워드를 이용하여, 클라이언트에서 요청한 메시지를 처리하고, 응답을 만들어서 다시 클라이언트로 보내며 클라이언트는 화면에 뿌리는 역할을..
Lombok 어노테이션(Annotation)
·
Programming/Spring
접근자/설정자 자동 생성 제일 먼저 살펴볼 어노테이션은 @Getter와 @Setter 입니다. 아마 Lombok에서 가장 많이 사용되는 어노테이션일 텐데요. 예를 들어, xxx라는 필드에 선언하면 자동으로 getXxx()(boolean 타입인 경우, isXxx())와 setXxx() 메소드를 생성해줍니다. @Getter @Setter private String name; 위와 같이 특정 필드에 어노테이션을 붙여주면, 다음과 같이 자동으로 생성된 접근자와 설정자 메소드를 사용할 수 있어서 매우 편리합니다. user.setName("홍길동"); String userName = user.getName(); 또한, 필드 레벨이 아닌 클래스 레벨에 @Getter 또는 @Setter를 선언해줄 경우, 모든 필드에 ..
Spring과 Node.js의 차이
·
Programming/Spring
Spring의 특징 - POJO(Plain Old Java Object) 기반의 구성 - DI(Dependency Injection, 의존성 주입)을 통한 객체 간의 관계 구성 - AOP(Aspect Oriented Programming) 지원 - 편리한 MVC 구조 - WAS에 독립적인 개발환경 Node js 특징 - 빠른 프로퍼티 접근(Fast Property Access) - 동적인 기계어 코드 생성(Dynamic Machine code Generation) - 효율적인 가비지 컬렉션(Efficient Garbage Collection) - 논블로킹 비동기 실행 - 싱글스레드! - 서버도 구현 가능! 결론 Node.js - javascript를 이용하여 프런트엔드 개발자 진입 장벽이 낮으며, 기존 ..