1 ) H2 데이터베이스 설치
DB는 H2로 사용하고 테스트 DB로 많이 사용하기도 한다.
H2 DataBase를 먼저 설치해준다.
http://www.h2database.com/html/main.html
H2 Database Engine
H2 Database Engine Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Browser based Console application Small footprint: around 2.5 MB jar file size Supp
www.h2database.com
다운로드후 압축을 풀면 h2/bin 폴더에 들어가면 아래의 사진과 같이 나온다.
mac은 h2.sh라는 파일이 있는지 확인후 권환 설정을 해준다.
실행을 하면 mac은 ./h2.sh 윈도우는 h2.bat을 실행하면 된다.
만약 ip로해서 화면이 뜨지 않았을 때는 ip를 localhost로 바꿔서 하면 된다.
JDBC URL에 적혀있는 ~/test는 폴더에 파일을 만든다는 의미가 있고, 연결을 누르면 아래의 사진과 같이 뜬다.
새로운 테이블이 생성된다.
Java에서 Long을 Sql에서는 bigint라고 부르고, generated by default as identity는 값이 들어오지 않으면
자동으로 채워주는 설정이다.
위의 코드를 친후, SELECT*FROM MEMBER;이라는 코드를 치면 아래의 사진과 같이 뜬다.
2 ) 순수 JDBC
메모리방식DB가 아닌 JDBC방식으로 사용하도록 변경한다.
과거에는 JDBC API로만 코딩하여 사용하던 방식이다.
1. build.gradle에 아래의 사진처럼 설정을 추가
2. application.properties에 스프링부트 DB연결 설정 추가
3. JdbcMemberRepository.java 를 생성 후 개발.
아래의 사진은 회원을 저장하는 save( ) -> JDBC로 구현한 사진이다.
SQL을 만들고 Connection을 열고 DB에 접근하여 회원 데이터를 저장하고 Pk를 가져온후 닫는다.SELECT, DELETE 등 코드의 흐름이 비슷하고 코드가 길기 때문에 잘 안쓴다고한다.
3 ) 스프링 통합 테스트
스프링 컨테이너, DB까지 연결한 테스트를 진행한다. 새로 만든 테스트 클래스 파일 상단에 어노테이션을 추구한다.
- @SpringBootTest : 스프링 컨테이너와 테스트를 함께 실행한다.
( 설정 파일을 참고하여 런타임 의존성, DB연결 모두 사용 가능) - @Transactional : 테스트 케이스에 어노테이션이 있으면, 테스트 시작 전에 트랜잭션을 시작하고, 테스트 완료 후에
항상롤백한다.
(이렇게 하면 DB에 데이터가 남지 않으므로 다음 테스트에 영향을 주지 않는다.)
MemberServiceIntegrationTest 클래스 코드를 아래의 사진으로 보여진다.
4 ) 스프링 JdbcTemplate
- 순수 Jdbc와 동일한 환경설정을 하면 된다.
- 스프링 JdbcTemplate과 MyBatis 같은 라이브러리는 JDBC API에서 본 반복 코드를 대부분 제거해준다.
( SQL은 직접 작성해야 한다. )
5 ) JPA
Java Persistence API 라고 부른다.
- JPA는 기존의 반복 코드는 물론이고, 기본적인 SQL도 JPA가 직접 만들어서 실행해준다.
- JPA를 사용하면 , SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환을 할 수 있다.
- JPA를 사용하면 개발 생산성을 크게 높일 수 있다.
JPA사용은 build.gradle에서 spring-boot-starter-jdbc에서 spring-boot-starter-data-jpa로 implementation하면 되고, application에 설정을 추가한다.
- application.properties에추가하는것
1. spring.jpa.show-sql=ture <- JPA가 생성하는 SQL를 출력
2. spring.jpa.hibernate.ddl-auto=none <- ddl-auto를 none으로 설정하면 테이블을 자동생성하지 않는다. create로 설정하면 JPA구동시 테이블을 자동생성한다.
- JPA로 사용하기위해서는 Entity로 매핑해야함.
- JpaMemberRepository.java 파일을생성한다.
-JPA를 사용할 때는 @Transactional 필수다.
-SpringConfig에서 파일 변경
6 ) 스프링 데이터 JPA
스프링 데이터 JPA를 사용하면 리포지토리 구현 클래스 없이 인터페이스만으로도 개발이 가능하다.
기본 curd도 제공한다.
기본적인 findAll, findById, save 등은 제공된다.
- interface로 SpringDataJpaMemberRepository 생성한다.
- SpringConfig 파일변경
MemberRepository 구현체를 스프링컨테이너가 관리하고있어서 생성자방식으로 의존성을 주입 해줄 수 있다.
생성자가 1개이기 때문에 굳이 @Autowired를 붙일 필요는 없다.
출처 : 인프런 - 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 김영한
'SPRING > 스프링 입문 (김영한 강사님)' 카테고리의 다른 글
스프링 입문 정리 (7) - AOP (0) | 2023.08.05 |
---|---|
스프링 입문 정리 (5) - 회원 관리 예제-웹 MVC 개발 (0) | 2023.07.14 |
스프링 입문 정리 (4) - 스프링 빈과 의존관계 (1) | 2023.07.10 |
스프링 입문 정리 (3) - 회원 관리 예제-백엔드 개발 (0) | 2023.07.10 |
스프링 입문 정리 (2) - 스프링 웹 개발 기초 (0) | 2023.06.05 |