프레임워크/Spring

[인프런][스프링 입문] 17~20 강

pythaac 2022. 3. 5. 01:39
  • 회원 웹 기능 - 등록
  • 회원 웹 기능 - 조회
  • H2 데이터베이스 설치
  • 순수 JDBC

 

https://github.com/pythaac/Spring_tutorial/tree/main/%EC%8A%A4%ED%94%84%EB%A7%81%20%EC%9E%85%EB%AC%B8%20-%20%EC%BD%94%EB%93%9C%EB%A1%9C%20%EB%B0%B0%EC%9A%B0%EB%8A%94%20%EC%8A%A4%ED%94%84%EB%A7%81%20%EB%B6%80%ED%8A%B8%2C%20%EC%9B%B9%20MVC%2C%20DB%20%EC%A0%91%EA%B7%BC%EA%B8%B0%EC%88%A0

 

GitHub - pythaac/Spring_tutorial: These are test tutorial codes between react native(android) and spring boot

These are test tutorial codes between react native(android) and spring boot - GitHub - pythaac/Spring_tutorial: These are test tutorial codes between react native(android) and spring boot

github.com

2fe17a4aafb1fc0616b81627fb590db669c93784

 

 

<스프링 입문 강의 - 17강 회원 웹 기능 - 등록>

* 회원 등록 기능 구현

HTML Event Mapping Response
home.html 회원가입 버튼 클릭 (get) members/new members/createMemberForm.html
members/createMemberForm.html 이름 입력 후 등록 클릭 (post) members/new redirect:/
home.html      

- [궁금] 왜 "/"를 return하지 않고 "redirect:/"를 return할까?

=> request에 필요한 정보가 있을 수 있으므로 클라이언트가 다시 요청하도록 만듦

=> 권한이 없을 경우 처리 등을 할 수 있음

https://jjunii486.tistory.com/31

 

리다이렉트(redirect)의 이해

웹 개발을 공부하면서 간단하면서도 이해가 안가는 부분이였던 Redirect 에 대해서 정리해보려고 합니다. 클라이언트가 서버한테 요청을 보냄 → 서버는 어떤 일들을 처리함 → 클라이언트한테

jjunii486.tistory.com


<스프링 입문 강의 - 18강 회원 웹 기능 - 조회>

* 회원 리스트 구현

HTML Event Mapping return
home.html 회원 목록 버튼 클릭 (get) /members members/memberList.html
members/memberList.html      

 


<스프링 입문 강의 - 9강 H2 데이터베이스 설치>

* 순수 Jdbc

- 애플리케이션에서 DB를 연결할 때 필요한 기술

- 20년 전 개발자들이 개발한 방식

- 스프링이 중복을 제거하여 JdbcTemplate을 제공

- SQL 쿼리까지 대신 만들어주는 JPA

- JPA도 오래된 기술이지만, 스프링에서 편리하게 사용할 수 있도록 한 번 감싼 기술

 

* H2 데이터베이스 설치

- [버전] 해당 강의에서는 특정 버전으로 설치해야한다고 함 (Lecture Note에 기재되어있음)

- [에러] 이전에 설치했던 이력이 있어서 정상동작하지 않음

- [해결] test.mv.db를 삭제하고 시도

- [에러] 그럼에도 정상 동작하지 않음 (Database not found ~)

- [해결] 스프링 서버가 동작중이라 종료 및 H2 콘솔 재시작하니 해결됨

 


<스프링 입문 강의 - 20 순수 JDBC>

* JDBC 세팅

- build.gradle에 추가

1) implementation 'org.springframework.boot:spring-boot-starter-jdbc'

2) runtimeOnly 'com.h2database:h2'

- application.properties

1) spring.datasource.url=jdbc:h2:tcp://localhost/~/test
2) spring.datasource.driver-class-name=org.h2.Driver

3) spring.datasource.username=sa

 

* JDBC 코드 추가

- JdbcMemberRepository 생성

- 복붙... (매우 길다)

 

* SpringConfig

- SpringConfig에서 memberRepository를 MemoryMemberRepository -> JdbcMemberRepository로 수정

- 스프링을 사용하는 이유다 -> 자바의 다형성을 활용 (인터페이스를 두고 구현체를 바꾸는 것)

 

* 개방-폐쇄 원칙(OCP, Open-Closed Principle)

- SOLID 원칙 중 하나

- 확장에는 열려있고, 수정/변경에는 닫혀있다

- 스프링 DI 사용하면 다형성을 활용해서 조립 코드만 조금 수정할 뿐, 어플리케이션 코드 전체를 수정할 필요가 없다