1. User 클래스 만들기
shot.mtcoding.blog에 user패키지를 만들고 여기에 User클래스 파일을 만든다.
@Table(name = "user_tb")
@Setter
@Getter
@NoArgsConstructor
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) //1씩 증가하는 설정
private Integer id;
@Column(unique = true, nullable = false)
private String username;
@Column(nullable = false)
private String password;
@Column(nullable = false)
private String email;
@CreationTimestamp //날짜가 null인 경우 현재 날짜를 넣어줌
private Timestamp createdAt;
//객체 생성 편하게 하기 위해 생성자를 빌더 패턴으로. DTO 편하게 만들 때도 좋음
@Builder
public User(Integer id, String username, String password, String email, Timestamp createdAt) {
this.id = id;
this.username = username;
this.password = password;
this.email = email;
this.createdAt = createdAt;
}
}
2. Board클래스에 외래키로 User 추가
게시판(Board)정보에 글쓴이(User) 정보를 추가할 것이다.
board_tb에 user_id컬럼을 추가할 것인데
한 명의 사용자가 여러 게시글을 작성할 수 있기 때문에
게시글과 사용자는 N:1 관계이다.
N:1 관계에서는 N쪽에 외래키를 배치한다. 즉 Board에 User라는 외래키를 넣어주면 된다.
원래는
private Integer userId
이렇게 넣어주겠지만
@ManyToOne
private User user;
이렇게 넣어준다. Hibernate가 board_tb에 user_id라는 컬럼으로 Integer 타입으로 만들어 준다.
(Hibernate 테이블명 생성 전략. camelCase를 snake_case 로 바꿔준다.
JPA의 Hibernate 특징으로 테이블 관계를 마치 자바 객체를 넣고 빼듯이 할 수 있게 해준다.
3. Hibernate Query format 설정
서버 시작시 콘솔에 hibernate가 생성하는 table을 보기 편하게 해주기 위해
application.properties에 아래 설정을 해준다.
# Query Format
spring.jpa.properties.hibernate.format_sql=true
다음 시간에는 이런 User 정보를 등록하는 회원가입 기능과 로그인 기능을 추가해보겠다
Share article