[Spring Boot] 어노테이션(Lombok, JPA, Hibernate)

hameee·2024년 1월 6일
0

Spring Boot

목록 보기
16/20
post-thumbnail

📍 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 // Lombok
@AllArgsConstructor // Lombok
@NoArgsConstructor // Lombok
@Builder // Lombok
@Getter // Lombok
@Table(name = "new_student") // JPA
@Entity // JPA
public class StudentEntity {
	@Id // JPA
	@GeneratedValue(strategy = GenerationType.IDENTITY) // JPA
	private int id;
	
	private String name;
	
	@Column(name="phoneNumber") // JPA
	private String phoneNumber;
	
	private String email;
	
	@Column(name="dreamJob")
	private String dreamJob;
	
	@UpdateTimestamp // Hibernate
	@Column(name="createdAt", updatable = false) 
	private ZonedDateTime createdAt;
	
	@UpdateTimestamp
	@Column(name="updatedAt")
	private ZonedDateTime updatedAt;
}

0개의 댓글