- JPA Auditing을 활용하여 Order엔티티의 orderDate에 시간값 삽입
- BaseTimeEntity 수정
@MappedSuperclass // JPA Entity 클래스들이 상속받을 경우 필드도 컬럼으로 인식
@EntityListeners(AuditingEntityListener.class) //Auditing 기능 추가
@Getter //Getter 추가, 롬복
public class BaseTimeEntity {
@CreatedDate //생성 시간
private LocalDateTime orderDate;
}
- Entity/Order
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Getter
@Entity
@Table(name = "Orders")
public class Order extends BaseTimeEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name = "member_id")
private Member member;
@CreatedDate
@Column
private LocalDateTime orderDate;
public static Order createOrder(OrderDto dto, Member member) {
if (dto.getId() != null) {
throw new IllegalArgumentException("생성 실패, 주문에는 ID가 없어야 함.");
} if (dto.getMemberId() != member.getId()) {
throw new IllegalArgumentException("생성 실패, 회원의 ID가 다름");
}
return new Order(
dto.getId(),
member,
dto.getOrderDate()
);
}
}
- Repository/OrderRepository
public interface OrderRepository extends JpaRepository<Order, Long> {
}
- DTO/OrderDto
@AllArgsConstructor
@NoArgsConstructor
@Getter
@ToString
public class OrderDto {
private Long id;
@JsonProperty("member_id")
private Long memberId;
private LocalDateTime orderDate;
public static OrderDto createOrderDto(Order order) {
return new OrderDto(
order.getId(),
order.getMember().getId(),
order.getOrderDate()
);
}
}
- OrderAPIController _ orderDate 확인을 위해 POST 요청만 구현
@RestController
public class OrderAPIController {
@Autowired
private OrderService orderService;
@PostMapping("/api/members/{memberId}/orders")
public ResponseEntity<OrderDto> create(@PathVariable Long memberId, @RequestBody OrderDto dto) {
OrderDto createdDto = orderService.create(memberId, dto);
return ResponseEntity.status(HttpStatus.OK).body(createdDto);
}
}
- OrderService _ orderDate 확인을 위해 CREATE 만 구현
@Slf4j
@Service
public class OrderService {
@Autowired
private OrderRepository orderRepository;
@Autowired
private MemberRepository memberRepository;
@Transactional
public OrderDto create(Long memberId, OrderDto dto) {
Member member = memberRepository.findById(memberId)
.orElseThrow(() -> new IllegalArgumentException("생성 실패, 대상 회원이 없음"));
Order order = Order.createOrder(dto, member);
Order created = orderRepository.save(order);
return OrderDto.createOrderDto(created);
}
}
- data.sql _ 더미데이터 추가
--order 더미데이터
INSERT INTO orders(id, member_id, order_date) VALUES (1, 1, current_timestamp);
INSERT INTO orders(id, member_id, order_date) VALUES (2, 2, current_timestamp);
INSERT INTO orders(id, member_id, order_date) VALUES (3, 3, current_timestamp);
- TalendAPI 확인
GitHub - Pearlmoon997/CoffeeShop: CoffeeShop
CoffeeShop. Contribute to Pearlmoon997/CoffeeShop development by creating an account on GitHub.
github.com
'프로젝트_ 커피주문 서비스' 카테고리의 다른 글
Order 조회, Order_Product 등록, 삭제 (0) | 2022.08.05 |
---|---|
OrderProduct_ SELECT 테스트 (0) | 2022.07.30 |
시간 등록을 위한 JPA Auditing 테스트 (0) | 2022.06.18 |
Member_ CRUD (API Controller) (0) | 2022.06.15 |
Product_ Update, Delete (API Controller) (0) | 2022.06.15 |