스프링 부트 2일차

5124 단어 SpringbootSpringboot

2일차 (01/05)

스프링 부트 구조

스프링 프레임워크

스프링 부트

서비스 클래스에서 DTO를 Entity클래스로 변환 시켜서 Entity클래스를 Repository로 보내준다
Repository에서 jsp를 상속받아서 jsp에 있는 메서드를 사용해서 DB와 연동한다

Entity클래스

DB에 create, insert 등등을 안하게 해준다

Entity를 사용하면 테이블 join이 쉬워진다

뭐야 개 좋아 미친

JSP와 같이 사용

의존성 주입

(DI, Dependency Injection)

  • 스프링이 객체를 관리할 수 있도록
    • @Controller, @Service, @Repository등

필드 주입 방식

@Controller
public class Controller {
	@Autowired
	private Service ms;
}

public interface Service{}

@Service
public class ServiceImple implements Service{}

생성자 주입 방식

@Controller
public class Controller {
	private final Service ms;

	@Autowired
	public Controller(Service ms){
	this.ms = ms;
}
}

public interface Service{}

@Service
public class ServiceImple implements Service{}

롬복 적용

@Controller
@RequiredArgsConstuctor
public class Controller {
	private final Service ms;
}

public interface Service{}

@Service
public class ServiceImple implements Service{}

@RequiredArgsConstructor

final이 붙은 변수만 롬복을 사용하게 해줌

mysql

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'mysql:mysql-connector-java'

를 gradle

세팅
db name : springbootclass
username: bootuser, password : 1234

application.yml에서

jsp은 한칸 탭 중요

ddl-auto를 다르게 하면 뭐가 달라지는지
create : 서버를 다시 실행하면 드롭을 하고 다시 만듬
update : 유지

Entity클래스나 등등 다시만들면 create로 바꿔서 다시 갈아엎어야함

Entity클래스 설정

static 메서드 사용
팩토리 메서드
이유
entity클래스의 생성자를 노출하지 않도록 함
가독성 있는 이름을 줄 수 있음
생성자는 리턴을 줄 수 없지만 메서드는 리턴도 가능

Service 설정

Repository 설정

Jpa에서 상속을 받으면 jpa에 메서드가 있어서 따로 만들 필요가 없다

Test 코드

junit이라는 자바에서 제공해주는 테스트

테스트 코드는 독립적이어야 한다
테스트 코드 안에서 실행을 하고 가져와야한다

테스트의 3단계

  • given
  1. 새로운 회원을 등록하고 해당 회원의 넘버를 가져옴
    1-1. 테스트용 객체를 생성
    1-2. 테스트용 객체를 DB에 저장
  • when
  1. 위에서 가져온 회원번호를 이용해서 조회
  • then
  1. 1번에서 가입한 회원의 정보와 2번에서 조회한 회원의 정보가 일치 하는지 테스트

일치 확인

import static org.assertj.core.api.Assertions.*;


assertThat(DTO1.get컬럼()).isEqualTo(DTO2.get컬럼());

초록색 체크가 뜨면 성공

Rollback

@Transactional
@Rollback

Transactional으로 새로운 공간을 만들고 내용을 테스트 한다음에
테스트가 끝나면 Rollback으로 다시 그 부분을 지운다

@PathVariable

@GetMapping(“{test}”)
@PathVariable(“test”) type test

주소에 값을 담아오면 사용하는 그 값을 메서드 안에서 사용을 하게 해준다

Optional

Entity타입을 한번 감싸주는 보호막 같은 느낌

Optional<MemberEntity> member = mr.findById(memberId);

MemberEntity member = mr.findById(memberId).get();

오늘 이거까지 하면 머리 터진다고 다음에 한다고 함
Entity타입에 null값이 들어오면 안되니까 그것을 다시 한번 확인하게 해주는?????

생성자 생성

@AllArgsConstructor
@NoArgsConstuctor

AllArgsConstuctor은 모든 필드를 매개변수로 사용하는 생성자를 생성
NoArgsConstuctor은 매개변수가 없는 생성자를 생성

테이블 pk가져오기

pk값을 auto increment로 해두면 가져오기 귀찮은데
이걸 jsp에서는 만들면 바로 가져오게 할 수가 있다.
save()메서드 뒤에 .get컬럼()을 해주면 가져 옴

정말 좋네

오늘 많은 것들을 해서 정리가 안되는 느낌이긴 하지만
그래도 이해는 되니 내가 직접 써봐야 알 것같다

좋은 웹페이지 즐겨찾기