📍 Controller
📍 Service(BO)
📍 Repository
- @Param: 마이바티스 어노테이션인데 jpa를 사용하면 작성하지 않아도 됨
📍 Entity
Lombok 어노테이션
@ToString
: 클래스에 대한 toString()
메서드를 생성하며 모든 필드를 포함합니다.
@AllArgsConstructor
: 모든 필드에 대한 매개변수가 있는 생성자를 생성합니다.
@NoArgsConstructor
: 매개변수가 없는 생성자를 생성합니다.
@Builder
: 클래스에 대한 빌더 패턴을 제공하며 많은 매개변수를 가진 생성자를 필요로하지 않게 합니다.
@Getter
: 모든 필드에 대한 getter 메서드를 생성합니다.
JPA 어노테이션
@Entity
: 클래스를 JPA 엔터티로 표시하여 이를 관계형 데이터베이스에 저장할 수 있음을 나타냅니다.
@Table(name = "new_student")
: 엔터티의 데이터베이스 테이블에 대한 이름을 지정합니다.
@Id
: 엔터티의 기본 키를 나타냅니다.
@GeneratedValue(strategy = GenerationType.IDENTITY)
: 기본 키를 자동으로 생성하도록 지정하며 주로 IDENTITY 컬럼을 사용합니다.
@Column(name="phoneNumber")
: 엔터티 필드를 데이터베이스 테이블의 컬럼에 매핑합니다.
Hibernate 어노테이션
@UpdateTimestamp
: 엔터티가 업데이트될 때마다 현재 타임스탬프로 필드를 채우도록 표시합니다. 이것은 Hibernate 전용 어노테이션으로 자동 타임스탬프 업데이트에 사용됩니다.
package com.example.lesson07.entity;
import java.time.ZonedDateTime;
import org.hibernate.annotations.UpdateTimestamp;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.ToString;
@ToString
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Getter
@Table(name = "new_student")
@Entity
public class StudentEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String name;
@Column(name="phoneNumber")
private String phoneNumber;
private String email;
@Column(name="dreamJob")
private String dreamJob;
@UpdateTimestamp
@Column(name="createdAt", updatable = false)
private ZonedDateTime createdAt;
@UpdateTimestamp
@Column(name="updatedAt")
private ZonedDateTime updatedAt;
}