728x90
반응형
Mariadb 데이터베이스를 만들고 Spring boot 애플리케이션 구축해서 자동으로 컬럼을 생성하고
해당 db와 연동을 해보자
종속성
Spring Web
Spring Data JPA
Mariadb dirver
application.properties
spring.jpa.hibernate.ddl-auto=create
// create로 설정한 이유 : 데이터베이스 구조가 없음 텅빈 깡통이여서
spring.datasource.url=jdbc:mariadb://localhost:3306/[db이름]?characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=[스키마이름]
spring.datasource.password=[비밀번호]
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
Entity Model 생성
package com.example.accessingdatamariadb;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
@Data
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String name;
private String email;
}
d이렇게만 해줘도 엔티티를 자동으로 테이블로 변환해줌
Repository 생성
package com.example.accessingdatamariadb;
import org.springframework.data.repository.CrudRepository;
// 이 기능은 Spring 에 의해서 userRepository 라는 Bean 으로 자동 구현
public interface UserRepository extends CrudRepository<User, Integer> {
}
Controller 생성
package com.example.accessingdatamariadb;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@Controller
@RequestMapping(path = "/demo")
public class MainController {
@Autowired
private UserRepository userRepository;
@PostMapping(path = "/add")
public @ResponseBody String addNewUser (@RequestParam String name, @RequestParam String email) {
User n = new User();
n.setName(name);
n.setEmail(email);
userRepository.save(n);
return "Saved";
}
@GetMapping(path = "/all")
public @ResponseBody Iterable<User> getAllUsers() {
return userRepository.findAll();
}
}
Application 생성
package com.example.accessingdatamariadb;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class AccessingDataMariadbApplication {
public static void main(String[] args) {
SpringApplication.run(AccessingDataMariadbApplication.class, args);
}
}
여기까지 왔으면 실행을 해보자


현재상태에서 localhost:8080/demo/all 가보자

curl 로 데이터를 추가해보자
curl localhost:8080/demo/add -d name=first -d email=test@test.com
Saved 가 뜨면 정상이다.

왜냐 /add 컨트롤러에 리턴값을 Saved 라고 설정해둬서

다시 전체 목록을 조회해보면?

하지만 이렇게만 해두면 보안에 문제가 생긴다
내가 열심히 만든 사이트에 누가 DROP TABLE 을 한다면...
그래서 보안 관행으로 프로그램을 사용자에게 노출하기 전에 데이터베이스를 약간 변경해보자
아래의 명령은 Spring 과 연결된 사용자의 모든 권한을 취소 > 아무것도 못함;;;
revoke all on [db이름].* from '스키마이름'@'%';
어느정도 권한이 있어야 하므로
grant select, insert, delete, update on [db이름].* to '스키마이름'@'%';
이렇게 하면 최소한의 필요한 권한은 가지게 된다
변경을 하게 될 경우에
spring.jpa.hibernate.ddl-auto 를 update 로 바꿔주자 아까 create 로 설정해준 것
그후 프로그램 다시 시작 끝
728x90
반응형
'Spring > Spring boot' 카테고리의 다른 글
| 시간 측정하는 간단한 aop (0) | 2022.12.22 |
|---|---|
| JPA 로 데이터 액세스 (0) | 2022.08.17 |
| Restful 웹 서비스 구축 (0) | 2022.08.16 |
| 스프링부트 개념정리 2 (0) | 2022.07.27 |
| 스프링부트 개념정리 (0) | 2022.07.26 |