일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- java
- QueryDSL
- spring
- 김영한
- Proxy
- 백준
- 스프링 핵심 기능
- 알고리즘
- JPQL
- JDBC
- db
- Android
- Spring Boot
- pointcut
- SpringBoot
- Exception
- 스프링 핵심 원리
- springdatajpa
- 인프런
- transaction
- kotlin
- AOP
- 자바
- http
- Thymeleaf
- jpa
- 그리디
- Greedy
- 스프링
- Servlet
- Today
- Total
목록jpa (149)
개발자되기 프로젝트
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bo5dmp/btrbpP8RcyD/kiqZoXQqU7tlQD3IRTprR1/img.png)
1. 회원 목록 조회 MemberController @GetMapping("/members") public String list(Model model){ List members = memberService.findMembers(); model.addAttribute("members", members); //실은 DTO변환 필요해! return "members/memberList"; } DTO 변환 필요. 필요한 정보만 뿌리자. API만들 때 절!대! 엔티티를 외부로 반환하지 말자. 2021.07.15 - [Project/영화리뷰 관리] - ['21.07.14] Entity, DTO 분리 ['21.07.14] Entity, DTO 분리 1. Entity란? DB table에 존재하는 Columns을 fie..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/rogtg/btrbqvh2ryS/JI6BtbHOChKK4LmygXzBIK/img.png)
1. memberForm 회원 가입에서 넘어오는 회원 데이터 Entity와 분리 @NotEmpty를 통한 validation가능. empty일 경우 스프링이 error띄움. @Getter @Setter public class MemberForm { @NotEmpty(message = "회원 이름은 필수입니다.") private String name; private String city; private String street; private String zipcode; } 2. MemberController createForm - @GetMapping - 해당 Get method로 해당 url 접근하면 회원가입 화면으로 이동. - 빈 MemberForm들고감. --> validation에 활용. @Con..
1. 검색 기능. OrderSearch - OrderSearch에 검색 옵션을 지정가능. - 이름을 넣어서 검색할지, 주문 상태를 넣어서 검색할지. @Getter @Setter public class OrderSearch { private String memberName; //회원 이름으로 주문 검색 private OrderStatus orderStatus; //주문 상태로 주문 검색 } 회원 이름과 주문 상태 모두 입력되어 있으면 아래와 같이 JPQL을 작성하면 된다. public List findAll(OrderSearch orderSearch){ //order를 찾고, member와 join, join문? return em.createQuery("select o from Order o join o...
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/AN2vh/btrbmzrFu3p/405UkAoLssDxM3X5Eweep0/img.png)
1. 테스트 요구사항 상품 주문이 성공해야 한다. 상품을 주문할 때 재고 수량을 초과하면 안 된다. 주문 취소가 성공해야 한다 2. 상품 주문 테스트 @SpringBootTest @RunWith(SpringRunner.class) @Transactional public class OrderServiceTest { @Autowired EntityManager em; @Autowired OrderService orderService; @Autowired OrderRepository orderRepository; @Test public void 상품주문() throws Exception{ //given Member member = new Member(); member.setName("회원1"); member...
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/r01Tn/btrbtoCjupj/sCxhdIKXQd6uREDe6LKkE1/img.png)
1. OrderRepository @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){ //} } 2. OrderService 배송 주소는 간단하게 회원의 주소로 대체 다른 엔티티들은 save를 호출하지 않는데, order만 save를 했다? 왜??? Cascade 옵션 때문! OrderI..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/tiiUV/btrbpW0sj1R/S7ZGMAVSoClRMIFDJWOosK/img.png)
1. 구현 기능 상품 주문 주문 내역 조회 주문 취소 2. 순서 주문 엔티티, 주문상품 엔티티 개발 주문 repository 개발 주문 service 개발 주문 검색 기능 개발 주문 기능 test 3. 주문 Entity Order는 Member, Delivery, OrderItemd와 연관관계가 있음 OrderItem은 list로 가지고 있음.(OrderItem이 연관관계주인) Order는 OrderItem을 읽어오기만 함. Order가 생성될 때 Member, Delivery, OrdeItems 필요함. 생성 메서드를 통해 한 번에 세팅하자. - 생성메서드가 가능한 이유는 - Order가 컨트롤 하는 쪽이기 때문에 양방향으로 연관관계를 맺어주는 편의메서드가 있기 때문. //==생성메서드==// //or..
1. 구현 기능 상품 등록 상품 목록 조회 상품 수정 2. 개발 순서 상품 엔티티 개발, 비느지느 로직 추가 상품 repository 상품 service 상품 기능 test 3. Item class 개발 객체 지향 관점으로는 데이터를 가지고 있는 곳 에서 business method가 있는 것이 좋다. 따라서 도메인 주도 설계 시 엔티티 자체가 해결할 수 있는 것은엔티티 안에 메서드를 만듦. 이 때 Setter로 변경하는 것이 아니라 특정 메서드(로직)을 통해 값을 변경해야 한다. 예제의 경우 주문에 따라 재고 수량(stockQuantity)가 변경이된다. stockQuantity는 Item에서 가지고 있다. 따라서 stockQuantity가 변경되는 로직은 Item에 추가하자. Item class - ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/m6t98/btrbrVfL8yQ/1e41z8hT7b17YPWukTPhj0/img.png)
1. 테스트 요구사항 회원가입을 성공한다 회원가입할 대 같은 이름이 있으면 예외발생! 2. 회원 가입 테스트 @SpringBootTest, @RunWith --> Springboot띄우기 위해 필요(Junit4 기준) @Transactional : 반복적이고 독립적인 test를 위해 rollback @SpringBootTest @RunWith(SpringRunner.class) @Transactional //rollback public class MemberServiceTest { @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; @Test public void 회원가입() throws Exceptio..