스프링 부트 2일차
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'
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-2. 테스트용 객체를 DB에 저장
- when
- 위에서 가져온 회원번호를 이용해서 조회
- then
- 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컬럼()을 해주면 가져 옴
정말 좋네
오늘 많은 것들을 해서 정리가 안되는 느낌이긴 하지만
그래도 이해는 되니 내가 직접 써봐야 알 것같다
Author And Source
이 문제에 관하여(스프링 부트 2일차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@captain1/스프링-부트-2일차저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)