JPA 프로젝트 생성

younk·2023년 10월 30일
0

JPA

목록 보기
1/1

토이프로젝트를 해야지 해야지 계속 미루다가...
회사 SI를 하면서 운동도 다니고 취미댄스도 하다보니, 토이프로젝트는 거들떠 볼 여유도 없이 회피하고만 있었다. 하지만 이제는 더이상 물러날수 없어서 하나하나씩 공부하며 프로젝트에 적용해보는 식으로 진행하려한다.

개발환경

IDE: IntelliJ Community
backend : springBoot 3.1.4
frontend : vue.js
db : mysql
build : gradle

환경세팅

프로젝트 dependency 추가

build.gradle

dependencies {
	// JPA
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	// Thymeleaf
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	// web
	implementation 'org.springframework.boot:spring-boot-starter-web'
	//lombok
	compileOnly 'org.projectlombok:lombok'
	// devTools
	developmentOnly 'org.springframework.boot:spring-boot-devtools'
	//MySql
	runtimeOnly 'com.mysql:mysql-connector-j'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

*스프링부트 2.7.8 이후부터 mysql-connector-java 의존성을 찾지 못하는 에러가 뜨는데, 해당 버전에서부터는 더이상 mysql-connector-java를 관리하지 않기 때문이다. 기존 mysql:mysql-connector-java의 groupId가 "mysql" 단일 단어로 이루어진 채 오래 동안 유지된 레거시 형태인데 이를 reversed domain의 형태인 "com.mysql"로 변경을 하기 위해서라고 한다. 따라서 2.7.8 이후부터는 'com.mysql:mysql-connector-j'을 선언해주면 된다.

gradle에서는 의존성을 가져오는 방법을 여러 가지 제공한다.
가져온 의존성을 컴파일 타임에만 사용하게 할 수도 있고, 런타임에만 사용하게 할 수도 있다. 의존성의 특성에 맞춰서 configuration을 잘 설정해 원하는 의존성을 적절하게 주입하면 배포 파일의 크기를 최적화할 수 있다.
configuration 목록은 문서에서 찾을 수 있다. 위에서 쓰인 것만 소개해 보자면 다음과 같다.

compileOnly: 컴파일 타임에만 의존성을 주입한다.
runtimeOnly: 런타임에만 의존성을 주입한다. (deprecated: runtime)
implementation: 컴파일 타임과 런타임에 모두 쓰이는 의존성을 주입한다. (deprecated: compile)
annotationProcessor: 어노테이션 프로세서로써 컴파일 시 사용되는 의존성을 주입한다.
testImplementation: 테스트 시에만 의존성을 주입한다. (deprecated: testCompile)
의존성은 그룹명:이름:버전 순으로 명시해서 주입할 수 있으며, 버전명은 optional로, 꼭 명시하지 않아도 된다.

build.gradle은 수정후 바로 적용할 수 없고, 업뎃을 해줘야한다.

인텔리제이에서 수정하면 오른편에 Load Gradle Changes를 눌러 수정된 파일을 적용시키면 dependencies가 반영된다.

DB 세팅

application.properties

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=pwd
spring.datasource.url=jdbc:mysql://localhost:3306/demo

DB는 로컬에 생성한 곳으로 연결해주었다. 회사 프로젝트에선 id와 password 자리에 암호화된 문자열이 세팅되어 있었다. 추후 시간이 되면 나도 암호화된 값으로 수정해 봐야겠다.

0개의 댓글