1. h2 설치&실행
Spring 버전에 맞춰서 h2를 깔아준다. 내가 설치한 Spring 부트는 3.xx라서 2.1.214 버전 이상( 2.2.224)을 설치했다. All platforms을 선택했다.
https://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




null값을 세팅하지 않고 insert하면 db가 들어왔을때 자동으로 id값을 채워줌
<h2에 테이블 생성>

그리고 테이블 관리를 위해 프로젝트 루트에 sql/ddl.sql 파일을 생성한다.

DB를 Spring과 연결하는 방법은 3가지가 있다.
2. 순수 JDBC
3. 스프링 JdbcTemplate
4. JPA
2와 3은 생략...., 나는 시간이 없기 때문에.. JPA를 쓰면 sql을 개발자가 직접 입력하지 않아도 된다.
4. JPA
① build.gradle에 라이브러리 추가

② 스프링 부트에 JPA 설정 추가

show-sql : JPA가 생성하는 SQL을 출력한다.
ddl-auto : JPA는 테이블을 자동으로 생성하는 기능을 제공하는데, none를 사용하면 해당 기능을 끈다.
③ JPA 엔티티 매핑
JPA = 객체 + ORM(Object, Relational, Mapping) -> 객체의 object와 relational 데이터베이스의 table을 mapping한다.

@Entity 추가, pk mapping을 했다. 설명은 주석에..
④ JPA 회원 Repository 생성
JpaMemberRepository 를 생성하고 MemberRepository를 implements 했다.. JPA는 EntityManager(이하 EM)를 필요로해서 만들어주고 맞춰서 코드를 짜줬다. save와 findById는 EM이 제공하는 메소드인 persist와 find가 있어서 쉽게 작성했다. 그 외의 메소드는 jpql언어를 이용해서 작성했다. 나중에 스프링 JPA를 사용하면 jpql없이 더 편리하게 짤 수 있다고 한다.


⑤ Service에 @Transactional 추가

스프링은 해당 클래스의 메서드를 실행할 때 트랜잭션을 시작하고, 메서드가 정상 종료되면 트랜잭션을 커밋한다. 만약 런타임 예외가 발생하면 롤백한다.
JPA를 통한 모든 데이터 변경은 트랜잭션 안에서 실행해야 한다.
⑥ SpringConfig 수정

⑦ 통합 test


Hibernate 어쩌구 나오는데.. 이게 머냐면 Spring Data JPA 세팅을 하면, 기본적으로 Hibernate라는 오픈소스 구현체가 사용된다.(JPA는 인터페이스) 사실 무슨말인지 잘 모르겠다.. 한번에 다 이해하기는 어려우니까 여기까지만 알고 다음~~
'Spring' 카테고리의 다른 글
| [Spring]#09 Spring과 객체지향 (1) | 2024.01.30 |
|---|---|
| [Spring]#08 Spring AOP (0) | 2024.01.29 |
| [Spring]#06 회원 관리 예제 웹 MVC 개발 (1) | 2024.01.25 |
| [Spring]#05 스프링 빈과 의존 관계 (0) | 2024.01.20 |
| [Spring]#04 Spring을 이용한 백엔드 개발 실습 (0) | 2024.01.15 |