DeseoDeSeo
ミ★ Spring Boot 01 본문
설정 하고 나서
alt + f5 (update해줌)
springmvc10 오른쪽 클릭 > build Path
○ static과 templates에 저장되는 파일의 종류가 다름.
➤ static : css, js
➤ templates: HTML
○ application.properties 누르고 오른쪽 > properties
⛧ 앞으로는 이렇게 파일 열어야함.
(application.properties > open with > Generic Editor- Spring Properties로 해야 자동완성 실행됨.
application.properties
# Spring Boot 환경설정하는 파일(DB,Tomcat 등)
# Tomcat Server Port 변경
server.port=8081
# Context Path 수정
# Context Path 수정하지 않으면 기본 Context Path -> / 지금까지는 이렇게 사용함.
# Context Path -> /boot로 바꿀거임.
server.servlet.context-path=/boot
pom.xml
(버전들 바꿈)
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>kr.spring</groupId>
<artifactId>SpringMVC10</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>SpringMVC10</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
Test위해서 testController만듬
HelloController.java
hello라고 요청이 들어오면 hello클래스를 실행시킴.
package kr.spring.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController //비동기방식으로 작동하려면 이게 꼭 있어야함.
public class HelloController {
@RequestMapping("/hello") //hello라고 요청이 들어오면
public String hello() {
return "Hello! spring Boot!";
}
}
⛤ 실행할때 SprinMVC10Application.java에서 오른쪽 클릭
주소창에 localhost:8081/boot/hello 검색 >
이렇게 출력됨.
pom.xml 에서 오른쪽 클릭후
그리고 오류가 나는 부분을 아래처럼 수정해준다.
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
DB설정
application.properties
#DB설정
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/com
spring.datasource.username=com
spring.datasource.password=com01
➤ 이렇게 오류가 나면 상단의 빨간 네모(정지)를 누르고 다시 Run as 하면 됨.
"Port 8081 was already in use"
✔ JPA( Java Persistence API, 자바 ORM 기술에 대한 API 표준 명세 )
: ORM을 사용하기 위한 인터페이스를 모아둔 것.
ORM에 대한 자바API규격이며 Hibernate등이 JPA를 구현한 구현체.
✔ Hibernate
: JPA를 사용하기 위해서 JPA를 구현한 ORM프레임워크 중 하나
Spring JPA 설정( JDBC ➜ API ) ➜ Hibernate(Spring JPA 구현체)
Spring에서는 Mapper interface 구현시켜서 추상메서드를 구현시키는건 ➜ SQLSessionFactoryBean이 함.
Spring JPA에서는 Hibernate : SQL Query 빌드(자동생성)
# 사용예시
JPA클래스.save(vo)하면 insert into Board(title, content, writer
values(#{title},..)할 필요 없음.
save라는 메서드가 다 처리해줌.
복잡한 쿼리는 직접 만들어야한다. (간단한 SQL문은 작성을 알아서 해주는 장점이 있다.)
JPA/Hibernate를 ORM(Object Relational Mapping, 객체관계맵핑 )방식이라고 부름
Board.java
package kr.spring.entity;
import java.util.Date;
import javax.annotation.Generated;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import lombok.Data;
@Entity //Board VO가 Database Table로 만들 떄 설정
@Data
public class Board { //vo가 orm을 통해서 table을 만들어줌.
@Id //pk를 의미함. //1씩 증가하면서 넣기 -> auto_incremente와 같음
@GeneratedValue(strategy = GenerationType.IDENTITY) //를 하면 자동으로 1씩 증가하게됨.
private Long idx; //게시글 고유번호(호환을 long형으로 해준다.)
private String title;
@Column(length=2000) //길이 지정 : 길이지정 따로 안할 때 길이 255임.
private String content;
@Column(updatable = false) //수정할 때 작성자는 안 바꿔 주겠다.
private String writer;
@Column(insertable = false, updatable = false, columnDefinition = "datetime default now()")
private Date indate;
@Column(insertable = false, updatable = false, columnDefinition = "int default 0")
private Long count;
}
application.properties
제일 처음에 실행할때는 스키마 생성을 위해서 spring.jpa.hibernate.ddl-auto= create였음.
스키마 생성 후, update로 바뀜.
#JPA
# MySQL 상세지정
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
#스키마 생성(create, update)
spring.jpa.hibernate.ddl-auto=update
#JPA가 실행하고 실행된 SQL문장 보기
spring.jpa.show-sql=true
#실제 JPA구현체인 Hibernate가 동작하면서 발생하는 SQL을 포맷팅해서 출력
spring.jpa.properties.hibernate.format_sql=true
'spring > Spring Boot' 카테고리의 다른 글
[Spring Boot ] 로그인 구현 (0) | 2023.10.23 |
---|---|
ミ★ Spring boot 02 (1) | 2023.10.20 |
[Spring Boot] Spring Boot Security (0) | 2023.10.20 |