2016년 3월 23일 수요일

#3.스프링부트,Spring Data JPA게시판(모델클래스작성및테이블생성)

도메인 모델 객체 생성하기

<!--[if !supportLists]-->n  <!--[endif]-->Jpa.board.model 패키지를 생성 후 두개의 엔티티 클래스를 만들자.

[Board.java]
package jpa.board.model;

import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import lombok.Getter;
import lombok.Setter;

@Entity
@Getter
@Setter
// 시퀀스의 시작값은 1
// 시퀀스의 기본 allocationSize50, 번호가 50부터 생기므로 1
@SequenceGenerator(name="BOARD_SEQ_GENERATOR",
                   sequenceName="BOARD_SEQ",
                   initialValue=1,
                   allocationSize=1)
public class Board {

//  MySQL이라면 아래와 같이 기술한다.
//        @Id
//        @GeneratedValue
//        @Column(length=10)
//        protected Integer id;     

           @Id     
           @GeneratedValue(strategy=GenerationType.SEQUENCE,
                           generator="BOARD_SEQ_GENERATOR")     
           @Column(length=10)
           protected Integer id;
          
           @OneToMany(mappedBy="board",
                                   cascade=CascadeType.ALL,
                                   fetch=FetchType.LAZY)
           protected List<Datgul> datguls;
          
           @Column(length=20, nullable=false)
           protected String name;
          
           @Column(length=20, nullable=false)
           protected String passwd;
          
           @Column(length=500, nullable=false)
           protected String title;
          
           @Column(length=4000, nullable=false)
           protected String content;
          
           //날짜기본형식 time, day, month, year 형태저장
           @Column(nullable=false)
           @Temporal(TemporalType.TIMESTAMP)
           protected Date regdate; 
          
           @Column(nullable=false, length=10)
           protected Integer readcount;
          
           // 답변인경우 어느글의 답변인지 상위글번호
           // 최상위글인 경우 자신의 글번호 동일하다.
           // 리스트보기에서 정렬시 우선적으로 reply로 정렬
           @Column(nullable=false, length=10)
           protected Integer reply;
          
           // 글아래 모든 답변들에 대해 reply_level과 관계없이 1씩 증가   
           @Column(nullable=false, length=10)
           protected Integer replystep;
          
           // 1,2차 답글인지 여부
           // 하나의 글에 답변이 두개면 그 두답변은 reply_level이 같다.
           // 리스트보기에서 reply_level에 따라 들여쓰기를 한다.
           @Column(nullable=false, length=10)
           protected Integer replylevel;       
}

[Datgul.java]
package jpa.board.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;

import lombok.Getter;
import lombok.Setter;

@Entity
@Getter
@Setter
// 시퀀스의 시작값은 1
// 시퀀스의 기본 allocationSize50, 번호가 50부터 생기므로 1
@SequenceGenerator(name="DATGUL_SEQ_GENERATOR",
                                                     sequenceName="DATGUL_SEQ",
                                                     initialValue=1,
                                                     allocationSize=1)
public class Datgul {

//  MySQL이라면 아래와 같이 기술한다.
//        @Id
//        @GeneratedValue
//        @Column(length=10)
//        protected Integer id;     

           @Id
           @GeneratedValue(strategy=GenerationType.SEQUENCE,
                           generator="DATGUL_SEQ_GENERATOR")    
           @Column(length=10)
           protected Integer id;
          
           @Column(length=20, nullable=false)
           protected String name;
          
           @Column(length=4000, nullable=false)
           protected String content;
          
           @ManyToOne
           @JoinColumn(name="board_id",
                       referencedColumnName="id",
                       nullable=false)
           protected Board board;
}


<!--[if !supportLists]-->n  <!--[endif]-->프로젝트에서 마우스 우측버튼 -> Run As -> Spring Boot App로 실행 후 오라클쪽에 테이블이 생성되는 것을 확인하자.
 

댓글 없음:

댓글 쓰기