다시 진행하니 까먹은 내용들이 많이 있어서.. 이렇게 진행해 보겠다.
1. MYSQL이 자동으로 실행되어야 하는데, 그렇지 않은 경우가 있다.
그럴땐, 해당 위치에서 생성해주자.
2. 내가 연결한 DB나 USER등을 생성해주어야 한다.
mysql -u root -p
MYSQL에 ROOT 계정으로 접근한다.
CREATE DATABASE newdb
CREATE USER jihyukcoding
GRANT ALL PRIVILEGES ON newdb TO jihyukcoding;
newdb라는 database를 생성하고 (table이 아니다!)
jihyukcoding이라는 사용자를 만들어서, 모든 newdb의 권한 (table의 생성 , 삭제 .. curd등등) 을 부여했다.
이제 jihyukcoding으로 접근하면, newdb에서 다양한 일을 할 수 있다.
*문제가 발생했던 파트를 정리하겠다.
use sys 이후에, grant all privileges on newdb to jihyukcoding 해야 한다.
user를 생성할때 host를 지정해주지 않으면 어떤 경로든 받는 jihyukcoding이 생성되는데,
이는 db안에서 jihykcoding@localhost와 다른 user로 판별된다.
(root의 경우도 마찬가지일 수 있으나, 본인은 설정을 해둔것인지 기본적으로 모든 권한이 다있는지
root@localhost도 모든 권한을 가지고 있었다. 해당 문제 발생시 rootlocalhost에게 전 권한 위임을 추천한다)
즉
create databse newdb
use sys
create user jihyukcoding@localhost
GRANT ALL PRIVILEGES ON newdb TO 'jihyukcoding'@'localhost';
flish privileges (즉시 반영)
3. spring 설정
runtimeOnly 'com.mysql:mysql-connector-j'
version upgrade에 따라, -j 넣어주기에 주의!
*버전이 올라가며 변경되었다.
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
jpa 사용을 위해 추가 .
jpa:
hibernate:
ddl-auto: update
show-sql: true
database-platform: org.hibernate.dialect.MySQLDialect
properties:
hibernate:
dialect: org.hibernate.dialect.MySQLDialect
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/weatherdb
username: weatherjihyuk
password:
username이 무엇으로, 그리고 그 위치는 weatherdb이고, pw는 내가 설정한대로
db에 접근하겠다는 의미.
4. sql connection에서
new로 connection명을 생성해주고, test connection으로 user가 해당 database(mysql 입장에선 schema)에
잘 들어올 수 있나 확인해야한다.
5. intelij를 동작시키면, 해당 connection에 원하는 user로 접근한다.
package com.example.weatherapi.domain;
import jakarta.persistence.*;
@Table(name = "table_demo")
@Entity
public class Demo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String demoText;
}
자동으로 db생성되게끔 연습용 코드를 작성하였고
jpa 기능에 따라 자연스럽게 connection을 타고, jihyukcoding@localhost로 접근하여 demo_table을 생성하였다.
(이제, jpa repository를 활용하여 weatherapi 요청 정보를 db에 저장하고,
controller의 기능을 분할하여 내가 요청했던 request를 재 확인하는 형태로 구성해보자)
JPA FINDBY시 주의사항
1. Intger-> Long-> int는 호환시에 문제가 없다.
2. 하지만, id로 findby를 날릴때는 jpa와 통일해야한다.
3. Findby를 사용할문은, emailid시 EmailId와 같은 TYPE을 준수해야한다.
4. 객체 TYPE도 맞추어줘야한다.
5. REPOSITORY TYPE 명도, 맞춰줘야 한다.
'백엔드' 카테고리의 다른 글
프로젝트 진행 과정 (0) | 2024.01.12 |
---|---|
properties 팁 ++ test의 종류들 (1) | 2024.01.04 |