분류 전체보기 1341

Ch02. JPA 시작 - 애플리케이션 개발

JPA 구동방식 persistence.xml 설정 정보를 조회하여 EntityManagerFactory를 생성한다. EntityManagerFactory에서 EntityManager를 생성하여 EntityManager를 통해 JPA를 사용하면 된다. public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); //Persistence Unit의 이름을 넣는다. EntityManager em = emf.createEntityManager(); //code EntityTransaction tx = em.getTransac..

Ch02. JPA 시작 - 프로젝트 생성

H2 데이터베이스 설치와 실행 http://www.h2database.com/ H2 Database Engine (redirect) H2 Database Engine Welcome to H2, the free SQL database. The main feature of H2 are: It is free to use for everybody, source code is included Written in Java, but also available as native executable JDBC and (partial) ODBC API Embedded and client/server mo www.h2database.com 최고의 실습용 DB 가볍다.(1.5M) 웹용 쿼리툴 제공 MySQL, Oracle 데이..

LEVEL 3 : 셔틀버스

https://programmers.co.kr/learn/courses/30/lessons/17678 코딩테스트 연습 - [1차] 셔틀버스 10 60 45 ["23:59","23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59"] "18:00" programmers.co.kr 문제 풀이 개인적으로 상당히 까다로웠던 문제이다. 시간과 분을 저장한 Time클래스를 담는 우선순위 큐에 모든 데이터를 저장한다. 시간이 다르면 시간이 작은 순으로, 시간이 같다분 분이 작은 순으로 우선순위를 높게 부여한다. Time 클래스의 생성자에 ..

Ch07. 웹 계층 개발 - 주문 목록 검색, 취소

주문상태 option 검색 # 회원명 대표상품 이름 대표상품 주문가격 대표상품 주문수량 상태 일시 CANCEL 주문 조회 메서드 Binding 된 파라미터를 가지고 조회하여 모든 Order를 출력한다. 검색 조건 같은 경우 그대로 가지고 가서 출력해준다. 검색 조건으로 출력된 데이터를 하단의 리스트로 출력해준다. 주문 삭제 메서드 id를 입력받아 해당 주문을 삭제하는 메서드를 작성한다.

Ch07. 웹 계층 개발 - 상품 주문

@Controller @RequiredArgsConstructor public class OrderController { private final OrderService orderService; private final MemberService memberService; private final ItemService itemService; @GetMapping("/order") public String createForm(Model model){ List members = memberService.findMembers(); List items = itemService.findItems(); model.addAttribute("members",members); model.addAttribute("items..

Ch07. 웹 계층 개발 - 변경 감지와 병합(merge)

준영속 엔티티? 영속성 콘텍스트가 더는 관리하지 않는 엔티티를 말한다. 여기서는 itemService.saveItem(book) 에서 수정을 시도하는 Book 객체다. Book 객체는 이미 DB 에 한번 저장되어서 식별자가 존재한다. 이렇게 임의로 만들어낸 엔티티도 기존 식별자를 가지고 있으면 준 영속 엔티티로 볼 수 있다. 준영속 엔티티를 수정하는 2가지 방법 1. 변경 감지 기능 사용 ID 값으로 다시 조회하여 영속성 컨택스트가 관리하는 대상으로 변경한 뒤, 변경하고자 하는 값을 변경하여, DirtyCheck를 통해 영속성 컨택스트가 알아서 값을 변경하도록 해준다. 2. 병합( merge ) 사용 현업에서 잘 사용하지 않는다(내가 원하지 않는 값이 변경될 위험이 있기 때문) JPA가 위에 했던 동작 ..

Ch07. 웹 계층 개발 - 상품 수정

updateItemForm 메서드 update 화면으로 이동한다. resource/templates/items/updateItemFrom.html Book 객체를 Form객체로 변환해야 한다. updateItem 메서드 form 객체를 입력받아 Book객체로 변경 후 save메서드를 호출한다. save메서드에서 Merge가 호출된다(중요) PathVariable 같은 경우 해당 Id값을 변경해서 다른 사람을 데이터를 변경할 수 있는 위험이 있기 때문에 실무에서는 권한 체크를 한번 더 해서 보안을 강화한다.

Ch07. 웹 계층 개발 - 상품 등록, 상품 목록

상품 등록 ItemController @Controller @RequiredArgsConstructor public class ItemController { private final ItemService itemService; @GetMapping("/items/new") public String createForm(Model model){ model.addAttribute("form",new BookForm()); return "items/createItemForm"; } @PostMapping("/items/new") public String create(BookForm form){ Book book = new Book(); book.setName(form.getName()); book.setPric..

Ch07. 웹 계층 개발 - 회원 목록 조회

memberController list 메서드 memberList.html # 이름 도시 주소 우편번호 memberList를 받아 출력하는 폼으로 보내준다. 참고 : Entity에 화면을 받아오는 기능을 쓰게 되면 유지보수가 점점 힘들어진다. 화면에 종속적인 코드가 계속 증가되기 때문에 점점 엔티티가 화면에 종속적으로 변경되게 된다(유지보수가 힘들어진다) 참고 : Api를 만들 때에는 엔티티를 절대 반환해서는 안된다. Entity에 속성이 추가되면 api스펙이 변화된다(Entity가 API가 변경되는 큰 문제가 발생된다) thymeleaf을 장점이 보이는 코드로 html태그를 그대로 쓸 수가 있다.

Ch07. 웹 계층 개발 - 회원 등록

MemberController @Controller @RequiredArgsConstructor public class MemberController { private final MemberService memberService; @GetMapping("/members/new") public String createForm(Model model){ model.addAttribute("memberForm",new MemberForm()); return "members/createMemberForm"; } @PostMapping("/members/new") public String create(@Valid MemberForm form, BindingResult result){ if(result.hasErro..