C>S>R 흐름 및 @, etc

이소연's avatar
Aug 05, 2024
C>S>R 흐름 및 @, etc
 
요청 >> 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에서 받아 온 데이터를 전달 받아 가공하는 것.
 

폴더명 분리

notion image
Share article

Coding's note