목록Bank-End (53)
관심쟁이 영호
이번 시간은 user 테이블을 만들어볼 계획이다. 코드를 바로 보자. // User.java @Entity //User 클래스가 스프링이 시작할 때, MySQL에 테이블을 생성한다. public class User { @Id //Primary key //프로젝트에서 연결된db의 넘버링 전략을 따라간다. -> 오라클이나 mysql에 따라 바뀐다는 뜻이다. @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; // 시퀀스, auto_increment @Column(nullable = false, length = 30) private String username; // 아이디 @Column(nullable = false, length = 10..
여기에 해당하는 내용은 앞서 포스팅한 내용이랑 똑같은 흐름이다. 앞에 내용을 참고해서 코딩을 해보자! 다음 시간에는 지금까지 했던 수업을 총 정리를 해볼 예정이다! 본 강의는 인프런의 김영한 개발자님이 강의하고 계신 "실전! 스프링 부트와 JPA활용1 - 웹 애플리케이션 개발"을 수강하면서 정리한 글입니다.
제일 중요한 부분이다. 변경감지와 병합 이것에 대해서 알기전에, 왜 이것을 배우느냐? 실제로 웹에서 스프링 JPA를 이용하면 이러한 구조가 될 것이다. - 위와 같은 구조이다. - 웹에서 사용자가 데이터를 변경하면, 폼을 통해서 코드로 넘어온다. form 객체로 넘어온 데이터를 영속성 컨텍스트로 넘겨주어야 한다. 여기서 문제이다. 먼저 여러가지 방법을 보자. /** * 상품 수정 */ @PostMapping(value = "/items/{itemId}/edit") public String updateItem(@ModelAttribute("form") BookForm form) { Book book = new Book(); book.setId(form.getId()); book.setName(form.ge..
오늘은 이전에 만들었던 코드부분을 직접 html을 만들고, css를 적용하고 실제로 동작을 시켜볼 예정이다. html, css수업이 아니기 때문에 코드에 대한 설명은 생략하셨다. 먼저 html과 css를 적용해야한다. 필요한 부분은 회원 가입, 회원 목록, 상품 등록, 상품 목록, 상품 주문, 주문 내역이다. 약간의 코드는 생략한다. 1. html 매칭시켜주기. //home Controller @Controller @Slf4j public class HomeController { @RequestMapping("/") public String home(){ log.info("home controller"); return "home"; } } - @RequestMapping("/") 이렇게 작성하면, 기본 ..
이 강의에서는 주문 검색기능을 추가하였다. 주문 검색기능을 제일 마지막에 한 이유는, 사용자의 입력에 따라, 동적인 쿼리를 생성해주어야 하기 때문에 알아야하는 부분이 있다고 하신다. 근데 동적쿼리를 생성하는게 상당히 까다롭다고 하신다. 그냥 생성하면, 되는거지만 유지보수를 하다보면 상당히 고충이 있다고 하신다. 총 3가지의 방법이 있는데 - JPQL을 생성할 때, OrderState 값을 살펴보고 판단하는 방법. - Criteria 방법이 있다고 하신다. 이건 동적쿼리 생성을 도와주기 위해서 나온거라고 말씀 하셨는데, 상당히 코드를 구분하기가 힘들다. 만들 때는 어렵지 않지만 데이터가 JOIN되고, 조건붙고 하다보면 코드를 한번에 알아보기 힘들어서 유지보수가 힘들다고 하신다. - 실무에서는 3번째 방법을..
이번 시간은 주문 Repository, Service를 구현할 예정이다. 1. 주문 Repository // OrderRepository.class @Repository @RequiredArgsConstructor public class OrderRepository { private final EntityManager em; public void save(Order order){ em.persist(order); } public Order findOne(Long id){ return em.find(Order.class, id); } // public List findAll(OrderSearch ordersearch){} } - Order를 저장하는 Save 매서드, 1개를 찾는 findOne 매서드를 추..