dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.boot:spring-boot-starter-mustache')
compile('org.projectlombok:lombok')
compile('org.springframework.boot:spring-boot-starter-data-jpa') //이번포스팅에 추가된 라이브러리
compile('com.h2database:h2') //이번포스팅에 추가된 라이브러리
testCompile('org.springframework.boot:spring-boot-starter-test')
}
1 spring-boot-starter-data-jpa
2 h2
위와 같이 패키지 생성 후 Posts클래스를 생성 해줍니다.
package com.momenting.book.springboot.domain.posts;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Getter
@NoArgsConstructor
@Entity // 테이블과 링크될 클래스임을 나타냄 테이블이름은 posts
public class Posts {
@Id //해당 테이블의 PK필드가 될 녀셕에게 붙힌다.
@GeneratedValue //PK생성 규칙을 나타냄
private Long id;
@Column(length = 500, nullable = false)
private String title;
@Column(columnDefinition = "TEXT", nullable = false)
private String content;
private String author;
@Builder
public Posts(String title, String content, String author) {
this.title = title;
this.content = content;
this.author = author;
}
public void update(String title, String content) {
this.title = title;
this.content = content;
}
}
생성자를 통해 최종적으로 값을 채운 후 DB에 삽입을 한다.
@Builder를 통해제공되는 빌더 클래스를 생성자 대신 사용합니다.
빌더 클래스를 사용한다면 어느 필드에 어떤 값을 채워야 할지 명확하게 인지를 할 수 있습니다.
해당 클래스의 빌더 패턴 클래스를 생성
생성자 상단에 선언시 생성자에 포함된 필드만 빌더에 포함
MyBatis에서 Dao라고 불리는 DB 접근자를 JPA에서는 Repository라고 부르며 인터페이스로 생성해줍니다.
JpaRepository<Entity, PK타입>을 상속하면 기본적인 CRUD 메소드가 자동으로 생성됩니다.
*주의해야할 점*
Entity 클래스와 기본 Entity Repository는 함께 위치 해야한다.
Entity 클래스는 기본 Entity Repository없이는 제대로 역할을 할 수 없다.
package com.momenting.book.springboot.domain.posts;
import org.springframework.data.jpa.repository.JpaRepository;
public interface PostsRepository extends JpaRepository<Posts, Long> {
}