본문 바로가기

Spring

(6)
스프링 부트 테스트 코드 작성 방법 목차 TDD의 정의 Controller 테스트 코드 작성 JUnit 소개 Junit Annotation 객체 생성 테스트 assert 메서드 TDD “테스트 주도 개발: 테스트가 개발을 이끌어 나간다.” 라고 정의할 수 있다. 메소드나 함수같은 프로그램 모듈을 작성할 때, 작성 종료조건을 먼저 정해놓고 코딩을 시작한다’는 의미로 받아들이면 편하다. RED: 항상 실패하는 테스트를 먼저 작성 GREEN: 테스트에 통과하는 프로덕션 코드 작성 REFACTOR: 테스트가 통과하면 프로덕션 코드를 리팩토링 위의 레드 그린 사이클처럼 테스트 코드를 작성하고 그걸 통과하는 코드를 만드는 과정을 반복하면서 제대로 동작하는지에 대한 피드백을 적극적으로 받는다. TDD를 사용하는 이유 개발 단계 초기에 문제를 발견하게 ..
Spring MVC 패턴 MVC 패턴이란 소프트웨어 디자인 패턴 중 하나 M (Model) / V (View) / C(Controller) Model: 어플리케이션 정보나 데이터, DB등을 의미함 View: 사용자에게 보여지는 화면, UI를 말함 Controller 데이터와 비즈니스 로직 사이의 상호 동작을 관리함. 즉, 모델과 뷰를 통제한다. MVC패턴에서 View와 Model이 직접적인 상호 소통을 하지 않도록 관리함 MVC 패턴은 MVC1 패턴과, 스프링이 사용하고 있는 MVC2 패턴으로 나눌 수 있음 MVC1 위 패턴의 경우 View와 Controller를 JSP가 담당하는 형태를 가짐 구현 난이도는 쉬우나, 내용이 복잡하고 거대해질수록 이 패턴은 힘을 잃는다. (유지보수에 있어서 문제가 발생한다) MVC2 위 패턴은 널..
JPA Repository 메서드 Repository란? 스프링부트에서는 Entity의 기본적인 CRUD가 가능하도록 JpaRepository 인터페이스를 제공함 JpaRepository 인터페이스를 상속하면 된다. 이때 사용할 Entity와 ID 값이 들어가게 된다 (JpaRepository // Member Entity의 Repository public interface MemberRepository extends JpaRepository { } 위와 같이 상속 받으면 위의 인터페이스는 다음과 같은 기능을 제공하게 된다. 메서드 기능 save() (저장) 엔티티를 저장함 findOne() (검색) pk로 레코드를 찾음 findAll() (검색) 전체 레코드 불러오기, 정렬 및 페이징이 가능함 count() (검색) 레코드 갯수 del..
[Spring] Spring Bean 정리 Spring Bean이란 무엇인가? Spring에서 POJO를 ‘Beans’라고 부른다. Beans는 애플리케이션의 핵심을 이루는 객체이며, Spring IoC 컨테이너에 의해 인스턴스화, 관리, 생성된다. Spring에 의하여 생성되고 관리되는 자바 객체이다. Spring Container란 무엇인가? Application Context를 스프링 컨테이너라고 하고, Application Context는 인터페이스이다. 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 어노테이션 기반의 자바 설정 클래스로 만들 수 있다. 스프링 컨테이너는 파라미터로 넘어온 설정 클래스 정보를 사용하여 스프링 빈을 등록함 스프링 빈의 생명 주기를 관리하며, 생성된 스프링 빈들에게 추가적인 기능을 제공하는 역할을 한다. ..
좋은 Entity 설계하는 방법들 Entity 설계시 주의할 점 Setter 사용 금지 Setter가 모두 열려있으면 변경 포인트가 많아져서 유지 보수가 힘들어짐, 어디서 해당 값이 변경되었는지 추적하기 힘듬 Setter가 필요할 경우에는 추적하기 쉽도록 메서드를 따로 생성해야함 모든 연관관계는 지연로딩(LAZY)로 설정 즉시로딩은 예측이 어렵고, 어떤 SQL이 실행될 지 예측하기가 어려움 특히 JPQL 실행 시 N+1 문제가 자주 발생하게 됨 OneToOne, ManyToOne 관계는 기본이 즉시로딩이므로, 꼭 지연로딩으로 설정해야한다. 연관관계에 필요한 entity를 한번에 가져오고 싶은 경우에는 FETCH JOIN을 사용하면 된다. 컬렉션은 필드에서 바로 초기화 해야지 NullPointerException으로 안전함 NPE 문제에서..
JPA 소개, 특징, 장점 및 단점 JPA의 정의 JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준이다. 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다. ORM이기 때문에 자바 클래스와 DB 테이블을 매핑한다. ORM이란 Object Reloational Mapping, 객체-관계 매핑이다. 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것을 말한다. Persistant API라고도 할 수 있다. JPA의 특징 JPA는 특정 기능을 하는 라이브러리가 아니고, 그저 인터페이스일 뿐이다. Hibernate는 JPA라는 명세의 구현체이고, JPA를 직접 구현한 라이브러리 이다. JPA와 Hibernate는 마치 자바의 interface와 해당 interface를 구현한 c..