본문 바로가기

SPRING

(26)
JPA JPA(Java Persistence API) 1. 기존의 반복 코드는 물론이고, 기본적인 SQL도 JPA가 직접 만들어서 실행해준다. 2. JPA를 사용하면, SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환을 할 수 있다. 3. JPA를 사용하면 개발 생산성을 크게 높일 수 있다. JPA는 인터페이스다! 구현체로 hibernate, eclipse 등이 있다. JPA는 자바진영의 표준 인터페이스. 참고하여 공부할 블로그 https://velog.io/@adam2/JPA%EB%8A%94-%EB%8F%84%EB%8D%B0%EC%B2%B4-%EB%AD%98%EA%B9%8C-orm-%EC%98%81%EC%86%8D%EC%84%B1-hibernate-spring-data-jpa JPA는 도대체..
스프링 객체 지향 프로그래밍(OOP) 객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나 OOP 는 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 단위인 객체들의 모임 각각의 객체는 메시지를 주고받고 데이터를 처리할 수 있다. 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용되는 이유다. 유연하고 변경이 용이 유연하고 변경이 용이하다는 표현은 어떤 뜻일까? 부품(객체)을 조립하여 하나의 자동차란 완성품을 만드는 것처럼, 프로그래밍에서는 컴포넌트를 유연하게 변경하면서 개발이 가능하다. 핵심개념 추상화, 상속, 다형성 등, 추가적으로 다중 상속 등의 특징이 존재한다. 그 중 OOP 의 핵심 개념인 다형성(Polymorph..
[스프링 통합테스트] @Spring, @Transactional package hifive.hifivespring.service; import hifive.hifivespring.domain.Member; import hifive.hifivespring.repository.MemberRepository; import hifive.hifivespring.repository.MemoryMemberRepository; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframe..
스프링 DI를 통해 알 수 있는 것 구현 클래스 추가 이미지 - MemberService는 현재 MemberRepository를 의존하고 있다. - MemberRepository는 구현체로 MemoryMemberRepository, JdbcMemoryRepository가 있다. ↓↓↓↓↓↓ 스프링 설정 이미지 그런데 스프링 컨테이너에서 설정을 어떻게 바뀌었는지 보자! 기존에는 메모리버전에 memberRepository스프링빈으로 등록했다면 이것을를 빼고 Jdbc memberRepository를 등록을 했다. 그리고 나머지는 손 댈 것이 없다. 이렇게 되면 구현체만 바껴서 돌아갈 것 이다. SOLID 원칙 : SOLID란 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙(SRP, OCP, LSP, ISP, DIP)의 앞 글..
[회원 웹 기능] - 홈 화면 추가 Hello Spring 회원 기능 회원 가입 회원 목록 package hifive.hifivespring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String home() { return "home"; } } ** 정적 컨텐츠 이미지 먼저 요청이 오면 스프링 컨테이너안에 관련 컨트롤러가 있는지 찾는다. 없으면 static파일을 찾기 때문이다. 그렇기때문에 HomeController에 매핑되어있는 것이 있기때문에 ho..
스프링 빈과 의존관계 - 자바 코드로 직접 스프링 빈 등록 회원 서비스와 회원 리포지토리의 @Service, @Repository, @Autowired 애노테이션을 제거하고, SpringConfig를 만들어 직접 스프링 빈을 등록 package hifive.hifivespring; import hifive.hifivespring.repository.MemberRepository; import hifive.hifivespring.repository.MemoryMemberRepository; import hifive.hifivespring.service.MemberService; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configu..
스프링 빈과 의존관계 - 컴포넌트 스캔 *회원 컨트롤러에 의존관계 추가 package hello.hellospring.controller; import hello.hellospring.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @Controller public class MemberController { private final MemberService memberService; @Autowired public MemberController(MemberService memberService) { this.memberService = memberS..
[회원 리포지토리 테스트 케이스 작성] 회원 리포지토리 테스트 케이스 작성 개발한 기능을 실행해서 테스트 할 때 자바의 main 메서드를 통해서 실행하거나, 웹 애플리케이션의 컨트롤러를 통해서 해당 기능을 실행한다. 이러한 방법은 준비하고 실행하는데 오래 걸리고, 반복 실행하기 어렵고 여러 테스트를 한번에 실행하기 어렵다는 단점이 있다. 자바는 JUnit이라는 프레임워크로 테스트를 실행해서 이러한 문제를 해결한다 package hifive.hifivespring.repository; import hifive.hifivespring.domain.Member; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; import org.junit.jupiter..