Spring

스프링부트 & jpa1 / 1 - 프로젝트 생성

공대키메라 2021. 7. 25. 22:02

드디어 개념 강의가 끝났고...

 

실제로 코딩을 한다고 한다

 

설정은 밑에 보이는 대로 했다.

 

Gradle , Java, Jar, 11

 

 

여기서 나는 Thymeleaf가 있는데 JSP와 비슷한건데 김영한 팀장님께서는 jsp를 잘 안쓰는 추세라고 하신다.

 

추가할 Dependencies는 Spring Web, Thymeleaf, Spring Data JP, H2 Database, Lombok이 있다. 

 

다 됏으면 genereate the project를 해서 다운받으면 된다..

 

그리고 프로젝트를 원하는 경로에 놓고 open하면 된다!

 

나는 IntelliJ IDEA를 사용해서 공부를 진행중이다.

 

gradle 설정 불러오는중...

 

프로잭트 로딩이 좀 걸린다. 진정하고 기다리자!

 

 

build.gradle파일을 보면 내가 설정한 정보가 등록된것을 확인할 수 있다.

plugins {
	id 'org.springframework.boot' version '2.5.3'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	id 'java'
}

group = 'jpabook'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	compileOnly 'org.projectlombok:lombok'
	runtimeOnly 'com.h2database:h2'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

test {
	useJUnitPlatform()
}

 

 main 패키지 안에 JpaShopApplication을 실행하고 주소창에 localhost:8080으로

접속하면 다음과 같은 화면을 볼 수 있다.

 

현재 아무것도 만든게 없기 때문에 이 페이지가 나오는게 정상이다

 

lombok을 사용하려면 이제 세팅을 해줘다.

 

 

File -> settings -> Plugins -> "lombok" 검색해서 볼 수 있음.

 

다운이 안되있으면 다운받고 

 

Annotation Processors를 settings 에서 검색해서 Enable annotaion processing에 체크를 해준다.

 

 

롬복 사용법은 알아서 공부하도록 하자

 

어떤 libary를 끌어 오는지 궁금하면 intelliJ 우측 상단에 Gradle (코끼리버튼)을 클릭해서 보면 된다.

 

우리가 쓸 View는 Thymeleaf로 한번 Thymeleaf 공식 사이트에 들어가보자.

 

오호...

맨 첫줄에 보면 타입리프는 웹과 standalone 환경 둘 다를 위한 현대 서버측 자바 템플릿 엔진라고 설명해주네요!

 

요즘에는 가급적이면 JSP를 쓰는 것보다 Spring Initializr에서 Template Engines에서

 

Thymeleaf, Apache Freemaker, Mustache, Groovy Templates를 선택할 수 가 있는데

이 4개가 권장하는 것들이고 Thymeleaf를 Spring에서 많이 밀어준다고 한다. 

 

여태까지 파일 생성 목록이다!

 

https://github.com/thelovemsg/jpa-practice-project1.git

 

GitHub - thelovemsg/jpa-practice-project1: jpa-practice-project1

jpa-practice-project1. Contribute to thelovemsg/jpa-practice-project1 development by creating an account on GitHub.

github.com

 

여기에 내 깃헙 사이트를 팟다.

가져가고 싶은 사람은 가져가서 같이 공부하자옹

 

 h2 데이터베이스를 사용할거다. 

 

recources 안에 application.yml파일을 생성해서

다음과 같은 같을 넣어준다. 

 

spring:
datasource:
url: jdbc:h2:tcp://localhost/~/jpashop;MVCC=TRUE
username: sa
password:
driver-class-name: org.h2.Driver

jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
show_sql: true
format_sql: true

 

이런 설정은 어떻게 알았냐고?

spring 공식 사이트를 파면 된다고 한다 

 

이번에 좋은 것은 jUnit을 이용해서 테스트파일을 만든다고 한다. 

 

이것이 이번에 처음 작성해본 테스트 코드다

 

package jpabook.jpashop;

import org.assertj.core.api.Assertions;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;

@RunWith(SpringRunner.class)
@SpringBootTest
public class MemberRepositoryTest {

    @Autowired MemberRepository memberRepository;

    @Test
    @Transactional
    @Rollback(false)
    public void testMember() throws Exception{
        //given
        Member member = new Member();
        member.setUsername("memberA");

        //when
        long savedId = memberRepository.Save(member);
        Member findMember = memberRepository.find(savedId);

        //then
        Assertions.assertThat(findMember.getId()).isEqualTo(member.getId());
        Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername());

    }
}

 

근데

hibernate: 
    insert 
    into
        member
        (username, id) 
    values
        (?, ?)

 

위와 같은 쿼리를 보면

? 로 표시된 파라미터를 볼 수 있다. 이것이 개발중에 굉장히 답답할 수 있는데

이것을 다 보여주는 방법이 있다고 한다 ㅎㅎ 너무좋아~

 

그건 spring boot datasource decorator라고 한다. 

 

https://github.com/gavlyukovskiy/spring-boot-data-source-decorator

 

GitHub - gavlyukovskiy/spring-boot-data-source-decorator: Spring Boot integration with p6spy, datasource-proxy, flexy-pool and s

Spring Boot integration with p6spy, datasource-proxy, flexy-pool and spring-cloud-sleuth - GitHub - gavlyukovskiy/spring-boot-data-source-decorator: Spring Boot integration with p6spy, datasource-p...

github.com

여기 사이트에서 가져온다. 

우리는 p6spy를 사용한다. 

 

설명 보고 dependency 추가하면...

 

이제 쿼리 가 나가면 그 밑에 ??에 대한 파라미터를 자세히 알려준다.

 

여기 보이넹!

 

근데 운영할때에는 이것을 남길지 고민해야한다. 성능상 문제가 될 수 있기에 조심해야한다. 

 

 

'Spring' 카테고리의 다른 글

스프링부트 & jpa1 / 2 - 요구사항 분석  (0) 2021.07.26
16. 경로 표현식 / 페치조인  (0) 2021.07.25
15. 조인  (0) 2021.07.24
14. 기본 문법과 쿼리 API  (0) 2021.07.24
13. 객체지향 쿼리 언어(JPQL)  (0) 2021.07.24