* 인프런 김영한님의 '스프링 입문' 강의를 듣고 작성한 내용입니다! (https://inf.run/txXC)
H2 DB 설치
- 개발이나 테스트 용도로 가볍고 편리한 DB, 웹화면 제공
- https://h2database.com/html/main.html
- (Windows 기준) Download -> Windows Installer 클릭해서 설치
- 설치 후 H2 console 실행
- jdbc:h2:~/test 생성
- 이후 ~/ 경로 에서 test.mv.db 파일 생성 확인
- 이후부터는 jdbc:h2:tcp://localhost/~/test 로 접속
- 접속 후 member table생성 (테이블 관리 위해 프로젝트 루트에 sql/ddl.sql 파일 생성)
- id 설정시 generated by default as identity 라고 해주면 id값을 setting안하고 insert해도 자동으로 db가 채워준다
순수 Jdbc
- 옛날에는 이렇게 코드를 길게 짰었다...(코드는 강의 자료 참고)
- SpringConfig.java에 MemberRepository에서 return new JdbcMemberRepository(dataSource); 로 변경해준다 (repository 구현체를 memory에서 순수 jdbc로 바꾸기)
- => 이렇게 해주는 것을 OCP(개방 폐쇄 원칙) 이라 한다. 확장에는 열려있고, 수정에는 닫혀있다. 객체지향의 다형성 이용
스프링 통합 테스트
- 테스트 시에 db에 데이터를 넣어 주는 것을 여러번 해야하는데, 테스트를 여러번 하니까 test class위에 @Transactional annotation을 달아줘서 테스트 하나가 끝나면 rollback 하도록 (만약 commit 해야하면 해당 테스트 위에 @Commit 달아주면 된다)
- 스프링 위에 올려서 하는 테스트를 통합테스트라고 한다 (이전에 java 코드로 짠것은 단위테스트라 한다)
- 단위테스트가 실행이 더 빠르다(스프링 컨테이너 없이 하니까)
스프링 JdbcTemplate
- 순수 jdbc와 동일
- sql은 직접 작성
JPA
- 기존의 반복되는 코드를 줄여준다
- sql과 데이터 중심 설계에서 객체 중심 설계로 전환 가능
- 생산성을 높일 수 있다
- build.gradle에 jpa, h2 데이터베이스 관련 라이브러리를 추가한 후 refresh(코끼리 모양 누르기)
- EntityManager을 사용한다(em, 이전엔 datasource사용)
- jpa 사용시에는 꼭 transaction이 필요하다. 따라서 MemberService에 @Transactional을 추가한다
스프링 데이터 JPA
- jpa기술을 spring이 한번 감싸서 제공하는 기술이다
- 인터페이스를 통해 CRUD 구현한다
- 인터페이스를 만들어 놓으면 스프링이 인터페이스 구현체를 만들어 spring bean에 등록하기 때문에 우리는 injection만 해주면 된다
- JpaRepository<Member, Long> Long은 pk의 data type
- JpaRepository에 들어가보면 이미 findById, findAll 이(공통 인터페이스) 구현되어 있으므로 우리가 필요한 findByName만 만들어 주면된다
- 이때 findBy + ? 로 해주고 안에 조건들을 넣어주면 자동으로 select m from Member m where m.name = ? 이렇게 만들어준다
'개발 > Spring' 카테고리의 다른 글
스프링부트 console에 color 적용하기, 로그 찍기 (0) | 2021.07.14 |
---|---|
[스프링 입문] AOP (0) | 2021.06.30 |
[스프링 입문] 스프링 회원관리 예제 - 6. 웹 MVC 개발 (0) | 2021.06.30 |
[스프링 입문] 스프링 회원관리 예제 - 5. 스프링 빈과 의존관계 (0) | 2021.06.30 |
[스프링 입문] 스프링 회원관리 예제 - 4. 회원 서비스 개발 및 테스트 (0) | 2021.06.29 |