본 포스팅은 mysql이 깔려있다는 가정하게 진행합니다.
mysql 데이터베이스와 연동 후 jpa를 사용할 예정이므로 다음과 같은 dependencies를 추가한다.
만약 기존 프로젝트에 mysql과 jpa를 사용하고 싶다면 build.gradle에 다음 두 줄을 적용한다.
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'mysql:mysql-connector-java:8.0.32'
cmd 창에 mysql -u root -p 명령어를 입력하고 비밀번호를 입력해서 접속한다.
create database [데이터베이 명]; 명령어를 입력하여 사용할 데이터베이스를 생성한다.
show databases; 명령어를 통해 생성이 되었는지 확인한다.
이제 스프링과 연동을 하기 위해 main/resources 디렉토리 안의 application.properties를 작성해야한다.
<application.properties>
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/shop?serverTimezone=Asia/Seoul
spring.datasource.username=root
spring.datasource.password=0000
#만들어진 sql 보여줌
spring.jpa.properties.hibernate.show_sql=true
#sql 가독성 좋게 보여줌
spring.jpa.properties.hibernate.format_sql=true
#db 초기화 전략. 기존 테이블 삭제 후 생성
spring.jpa.hibernate.ddl-auto=create
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
url은 mysql:// [데이터베이스 URL] : [포트 번호] / [데이터베이스 이름]?serverTimezone=UTC
으로 설정한다.
포트 번호를 건드리지 않고 mysql을 설치했다면 데이터베이스 포트 번호는 3306일 것이다.
그리고 mysql에 로그인 하기 위한 username과 그에 해당하는 비밀번호도 적어준다.
이제 엔티티를 만들어준다.
<Person>
@Entity //엔티티 정의
@Table(name="person_table") //사용하지 않으면 클래스 이름이 테이블 이름이 됨
@Getter //lombok getter
@Setter //lombok setter
public class Person {
@Id //기본키를 의미. 반드시 기본키를 가져야함.
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NonNull
@Column(unique = true, length=10) //유일하고 최대 길이가 10.
private String personName;
@Column(name="person_age")
private int age;
}
그리고 새로운 Person을 데이터베이스에 등록해 볼 예정이므로 레포지토리와 controller도 만든다.
<controller>
@Controller
@RequiredArgsConstructor
public class PersonController {
private final PersonRepository personRepository;
@PostMapping("/users/save")
public void personSave(@RequestBody Person person) {
personRepository.save(person);
}
}
<repository>
@Repository
public interface PersonRepository extends JpaRepository<Person, Long> {
}
이제 애플리케이션을 실행해본다.
테이블을 생성할 때 사용한 쿼리문을 보여주고 있다.
mysql workbench를 통해서 보면 테이블이 잘 생성되었다.
postman으로 컨트롤러에서 설정한 url로 POST 요청을 보내보면 데이터베이스에 잘 반영되는 모습을 확인할 수 있다.
github 주소
https://github.com/ezcolin2/Spring-Class/tree/main/mysql-jpa
'공부 > Spring' 카테고리의 다른 글
[Spring][스프링 MVC 1편] 스프링 MVC 어댑터 패턴 (controller v5) (0) | 2023.03.04 |
---|---|
[Spring][인프런 스프링 MVC] MVC 구를 직접 개선해가며 스프링 MVC 구조를 이해하기 (controller v1~v4) (0) | 2023.03.01 |
[Spring][Thymeleaf] 공통 레이아웃 적용 (Thymeleaf Layout Dialect) (1) | 2023.02.14 |
[Spring][Thymeleaf] 타임리프 기초 문법 (2) | 2023.02.12 |
[Spring][JPA] H2 데이터베이스를 사용한 JPA 기초 사용법 (0) | 2023.02.10 |
댓글