일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 김영한
- 스프링 핵심 기능
- 알고리즘
- JDBC
- 그리디
- 자바
- http
- db
- Android
- springdatajpa
- kotlin
- 스프링 핵심 원리
- Spring Boot
- transaction
- java
- 스프링
- Thymeleaf
- spring
- pointcut
- Servlet
- Exception
- Greedy
- JPQL
- 인프런
- AOP
- jpa
- 백준
- Proxy
- SpringBoot
- QueryDSL
- Today
- Total
목록인프런 (528)
개발자되기 프로젝트
1. 계층형 구조 사용 controller, web : 웹 계층 service : 비즈니스 로직, 트랜잭션 처리 repository : JPA를 직접 사용하는 계층, entity Manager 사용 domain : 엔티티가 모여있는 계층, 모든 계층에서 사용 2. 패키지 구조 jpabook.jpashop domain exception repository service web 3. 개발 순서 도메인, 서비스, repository 계층 Test case 작성해서 검증 웹 계층 API
1. 엔티티에는 가급적 Setter를 사용하지 말자 Setter가 모두 열려있으면 변경 포인트가 많아서 유지보수가 어려워진다.. 2. 모든 연관관계는 지연로딩으로 설정! 엄!청!중!요! EAGER타입은 예측이 어렵고, 어떤 SQL이 실행되는지 추적하기 어렵다. - 특히 JPQ을 실행할 때 N+1 이슈가 발생한다. - 만약 A와 B가 일대다 관계인데, EAGER 타입이다? - A불러오는 쿼리 실행하고 n개의 B를 불러오는 쿼리 바로 실행됨 ㄷㄷ JPA Fetch type, N + 1 이슈 1. Fetch Type이란? Entity 를 조회할 경우 해당 Entity와 연관관계에 있는 Entity를 어떻게 가져올 것인지 설정하는 값이다. - 연관 관계에 있는 Entity 를 모두 가져온다 → Eager - 연..
1. 엔티티 클래스 개발 시 주의사항(Getter, Setter), 참고 이론적으로 Getter, Setter 모두 제공하지 않고, 꼭 필요한 별도의 메서드를 제공하는게 가장 이상적. Getter의 경우 모두 열어두는 것이 편리하다. Getter는 아무리 호출해도 호출 해도 값이 변하거나 무슨 일이 일어나지 않는다. 하지만 Setter를 호출하면 데이터가 변한다. Setter를 막 열어두면 엔티티가 왜? 변경되는지 추적하기 어려움 그래서 엔티티를 변경할 때는 Setter 대신에 변경 지점이 명확 하도록 변경을 위한 비즈니스 메서드를 별도로 제공해야 한다 테이블은 관례상 테이블명+id로 사용함. 그래서 column(name="필드명_id")로 했음. 2. 일대다, 다대일 many측에 FK가 있음. many..
1. 도메인 모델 회원과 주문의 관계 : 1 대 N 주문과 배송의 관계 : 1 대 1 카테고리와 상품의 관계 : N 대 N 주문과 상품의 관계 : N 대 N - 그러나 다대다 관계는 관계형 DB, entity에서도 사용하지 않음 - 1 대 N 관계로 풀기 위한 중간에 주문 상품이 존재. 상품을 도서 음반 영화 각각 상속 받음. 2. 엔티티 분석 Member : id(PK), 이름, 입베디드 타입인 Address, Order List를 가진다. Order : 한 번 주문 시 여러 상품 주문 가능함. 따라서 Order와 OrderItem을 일대다 관계. Order는 Item을 주문한 회원과 배송 정보, 주문 날짜, 주문 상태를 가지고 있다. 주문 상태는 열거형을 사용 --> 주문(Order), 취소(CANC..
1. 회원 기능 회원 등록 회원 조회 2. 상품 기능 상품 등록 상품 수정 상품 조회 3. 주문 기능 상품 주문 주문 내역 조회 주문 취소 4. 기타 요구사항 상품은 재고 관리가 필요 삼품의 종류는 도서, 음반, 영화 상품을 카테고리로 분류 할 수 있음 삼품 주문 시 배송 정보를 입력할 수 있다.
1. application.yml, 설정하기 datasource 설정 datasource: url: jdbc:h2:tcp://localhost/~/jpashop username: sa driver-class-name: org.h2.Driver --> datasource의 url을 명확하게 h2 콘솔에서 접근하는 url과 동일하게 입력해주자. --> url이 달라서 H2와 연결이 되지 않아 ApplicationContext load fail 발생 jpa 설정 jpa: hibernate: ddl-auto: create Properties: hibernate: show_sql: true format_sql: true - ddl-auto : table 자동 생성 여부 - ddl-auto : create --> ..
1. H2 DB 설치 및 사용법은 이전 글 참고 H2 Database 설치 및 사용 법 2021.05.22 - [JPA] - H2 In-Memory DB H2 In-Memory DB 1. H2 DB 란? DB는 JAVA기반의 경량화된 관계형 DB file 로 저장하여 실제 DB처럼 유지할 수 있고, memory DB로 사용하여 실제 인스턴스가 동작하는 시점에.. bsh-developer.tistory.com DB 파일 생성 방법 - 최초 url : jdbc:hs~/jpashop --> 파일로 접근 - jpasho.mv.db 파일 생성 확인 (사용자 폴더 경로) - 이후 : jdbc:h2:tcp://localhost/~/jpashop --> 네트워크모드로로 접근
1. Thymleaf 사용 template 엔진으로 Thymleaf를 사용 template 엔진? 템플릿과 자료를 합성하여 사용자가 볼 수 있도록 렌더링 해줌 2. Controller 간단한 controller를 구성 @Controller public class HelloController { @GetMapping("hello") public String hello(Model model){ model.addAttribute("data", "hello!"); return "hello"; // 화면이름, html 파일명, resource의 templates하위. } } Model?? - model에 data를 실어서 Controller를 통해 view로 넘길 수 있음 - 생성된 data를 view로 보낼 때..