[Spring] Spring mySql 연결 + JPA
인텔리J 유료버전 기준으로 작성된 글 입니다
Java Version 11
[Spring] 스프링 부트 시작하기. Hello, World!
[Spring] form 태그와 JSON 형식을 이용한 요청
과 이어지는 내용입니다.
라이브러리 의존성 추가
우선 build.gradle
을 열어서 dependencies
에다가 mySql과 JPA라이브러리 의존성을 추가해주자.
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'mysql:mysql-connector-java'
이 위에 두개를 붙여 넣으면 된다.
runtimeOnly는 컴파일 시점에는 필요없지만 실행 시점에는 꼭 필요한 라이브러리의 의존성을 추가할 때 사용한다.
application.properties
resource 패키지를 확인해보면, application.properties 라는 파일을 확인할 수가 있는데,
여기다가 mySql 연결을 위한 값들을 입력 해주면 된다.
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/spring
spring.datasource.username=id
spring.datasource.password=pw
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.format_sql=true
각각의 내용은 아래를 참고하면 된다.
url => jdbc:mysql://[ip주소]:[port]/DB이름
username => mysql 유저네임
password => mysql 비밀번호
show-sql => 실행되는 query문 console에 출력
ddl-auto => 서버 실행 시 entity의 내용으로 테이블을 생성 여부
- create : 서버 실행시 테이블 생성(기존 내용 삭제됨)
- update : 서버 실행시 변경사항 있으면 실행, 테이블 없으면 자동 생성
- none : 실행 안함
- format-sql* => console에 출력되는 query문 가독성을 위한 포맷여부
Entity 생성
바로 위에서 ddl-auto
옵션 설정을 통해,
entity의 내용으로 테이블을 생성할 수 있게끔 세팅 했다.
entity를 만들어서 잘 db 연결이 잘 되는지 확인을 해보자.
domain package를 하나 생성하고,
그 안에 User라는 클래스를 생성하자.
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long idx;
@Column
private String userId;
@Column
private String userPw;
public User() {
}
public User(String userId, String userPw) {
this.userId = userId;
this.userPw = userPw;
}
}
요렇게 내용을 채워주면 된다.
이렇게 하고 보니 Nest.js
와 상당히 유사하다고 느껴진다.
User class는 3가지의 필드를 지니고 있다.
인덱스와, 유저아이디, 유저 패스워드이다.
각각의 역할에 맞게 어노테이션을 선언해주면 된다.
인덱스 같은 경우는 Primary Key이며, 값이 자동으로 증가될 수 있게끔 auto_increment 옵션을 넣어주고 싶기에,@Id
와 @GeneratedValue(strategy = GenerationType.IDENTITY)
을 적용 시켰고,
그외의 나머지 값들은 @Column
을 적용시켜 주었다.
그리고 특이하게 생성자가 두개이다.
하나는 기본 생성자와, 또 하나는 인자값을 받는 생성자 인데,
setter를 만들고 싶지 않아서 인자값을 받은 생성자를 추가해주었더니,
기본생성자도 추가하라고, 알림이 떠서 추가해주었다.
왜 이렇게 해줘야 하는지 검색을 해보긴 했는데 아직 잘 이해가 되지 않는다.
따로 공부를 해봐야 겠다.
무튼 이렇게 해놓고 서버를 다시 실행시키면 된다.
서버를 실행시키면,
console에서 테이블 생성 쿼리가 실행되는 것을 확인할 수 있다.
터미널에서 mysql에 접속하여 결과를 확인해보면,
테이블이 추가된 것을 확인할 수 있다.