요청 >> con >> service >> Repo >> DB
REPO : DB랑 소통
SERVICE 하나의 기능을 나타내는 것.
일의 최소의 단위 : Transitional
EX) 먹는다.
REPO) 삼겹살, 라면,
<<채현이 블로그 service 참조>>
@NoArgsConstructor
@Data
@Table(name = "product_tb")
@Entity
public class Product {
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
private Integer id;
@Column(unique = true, length = 20, nullable = false)
private String name;
@Column(nullable = false)
private Integer price;
@Column(nullable = false)
private Integer qty;
@CreationTimestamp
private LocalDateTime createdAt;
}
@CreationTimestamp은 Java 어노테이션 중 하나로, 주로 Hibernate나 Spring Data JPA와 같은 ORM 프레임워크에서 사용됩니다. 이 어노테이션은 엔티티 클래스의 필드에 적용되며, 해당 필드가 엔티티가 생성될 때 자동으로 현재 시간으로 설정되도록 합니다.
private LocalDateTime createdAt;는 엔티티 클래스의 생성 시간을 나타내는 필드입니다. @CreationTimestamp 어노테이션을 사용하면 이 필드는 엔티티가 데이터베이스에 저장될 때 현재 시간으로 자동으로 설정됩니다. 이렇게 함으로써 개발자는 생성 시간을 별도로 설정할 필요 없이 간편하게 엔티티의 생성 시간을 추적할 수 있습니다.
q) 왜 여기만 @Column이 아니지?
일반적으로 생성 시간은 데이터베이스에 반영되어야 하므로,
@CreationTimestamp 어노테이션을 사용하여 이를 자동으로 처리하는 것이 편리합니다. 따라서 createdAt 필드에는 @CreationTimestamp 어노테이션이 붙어 있습니다.
하지만 다른 필드들은 각각의 특성에 따라 다른 어노테이션들이 적용되어 있습니다. 예를 들어 name 필드는 유니크해야 하므로 @Column(unique = true) 어노테이션을 사용하고, price와 qty 필드는 null이 아니어야 하므로 @Column(nullable = false) 어노테이션을 사용합니다.
이렇게 각 필드에 적절한 어노테이션을 사용하여 그 필드의 특성을 정의할 수 있습니다.
MVC
-컨트롤러, 레파지, 서비스(mvc)
컨트롤러
주로 사용자의 요청 처리 후, 지정 뷰에 모델 객체를 넘겨줌.
View >> Controller >> Service
Service
http통신 x, 순수 자바 객체, request/response를 매개변수로 받지x_그거는 컨트롤러에서)
-역할) DAO가 DB에서 받아 온 데이터를 전달 받아 가공하는 것.
폴더명 분리

Share article