Application.properties
server.port=8181 // 서버 포트 설정(기본값 8080) => 내장 톰캣이기때문
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver // mariadb 부분만 다른걸로 변경하면 연동 가능
spring.datasource.url=jdbc:mariadb://localhost:3306/bootex // bootex DB에 연동
spring.datasource.username=bootuser // 아이디
spring.datasource.password=bootuser // 패스워드
spring.jpa.hibernate.ddl-auto=update
//프로젝트 실행시 자동으로 DDL(create, alter, drop) 을 생성할 것 인지 결정하는 설정
// create : 매번 테이블 생성을 새로 시도한다
//update : 변경이 필요한 경우 alter로 변경되고 테이블이 없는경우 create가 된다
spring.jpa.properties.hibernate.format_sql=true
// 실제 JPA 구현체인 Hibernate가 동작하면서 발생하는 SQL을 포맷팅해서 출력한다
// -> 실행되는 SQL의 가독성을 높여준다
spring.jpa.show-sql=true // 처리시 발생하는 SQL을 보여줄 것인지 결정
spring.thymeleaf.cache=false //thymeleaf을 저장 후 새로고침으로 바로 적용 !
build.gradle - 의존성 추가
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
annotationProcessor 'org.projectlombok:lombok'
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
// https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client
implementation group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '2.7.1'
}
Entity 생성
import lombok.*;
import javax.persistence.*;
@Entity
// 해당 클래스가 엔티티를 위한 클래스이며,
// 해당 클래스의 인스턴스들이 JPA로 관리되는 entity 객체라는 것을 의미
// 옵션에 따라서 자동으로 table 생성가능
// 클래스의 멤버 변수에 따라서 자동으로 칼럼들도 생성된다.
@Table(name = "tbl_memo")
// @Entity 어노테이션과 같이 사용할 수 있는 어노테이션
// DB상에서 엔티티 클래스를 어떤 테이블로 생성할 것인지에 대한 정보를 담기위한 어노테이션
@Data
// @Getter @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor
// 이 모든걸 합친 어노테이션
@Builder // builder 패턴 사용하기 위한 어노테이션
@AllArgsConstructor // @Builder 를 이용하기 위해서 항상 같이 처리해야 컴파일 에러가 발생하지 않는다
@NoArgsConstructor // @Builder 를 이용하기 위해서 항상 같이 처리해야 컴파일 에러가 발생하지 않는다
public class Memo {
@Id // @Entity 가 붙은 클래스는 PK에 해당하는 특정필드를 @Id로 지정해야 한다
@GeneratedValue(strategy = GenerationType.IDENTITY)
// 해당 어노테이션은 사용자가 입력하는 값을 사용하는 경우가 아니면 자동으로 생성되는 번호를 사용하기 위해 사용한다
private Long mno;
@Column
// 추가적인 필드(컬럼)이 팔요한 경우 사용 * DB 테이블에는 컬럼으로 생성되지 않는 필드의 경우 @Transient를 사용한다
private String memoText;
}
프로젝트 실행 후 확인
@Entity 클래스로 인해 테이블이 생성되고 이름을 지정하지 않으면 class 이름으로 생성된다.
JPA의 Table 생성 방법이다 !
tbl_memo 라는 이름의 테이블이 생성되고
mno, memo_text 두 컬럼도 함께 생성된다.
'Back-End > Spring' 카테고리의 다른 글
[spring boot] 간단한 방명록 만들기 [2편] (0) | 2022.06.16 |
---|---|
[spring boot] @Query 어노테이션 (0) | 2022.06.14 |
[spring boot] JPA 페이징/정렬 처리 (0) | 2022.06.14 |
[spring boot] JPA로 CRUD 테스트 (0) | 2022.06.10 |
[spring boot] 간단한 방명록 만들기 [1편] (0) | 2022.05.20 |