2002년 로드 존슨 책 출간EJB의 문제점 지적EJB 없이도 충분히 고품질의 확장 가능한 애플리케이션을 개발할 수 있음을 보여주고, 30,000라인 이상의 기반 기술을 예제 코드로 선보임책 추간 직후 Juergen Hoeller(유겐 휠러), Yann Caroff(얀
java11 설치, Intellij 설치 스프링 부트 스타터 사이트로 이동해서 스프링 프로젝트 생성: https://start.spring.io(1) 프로젝트 선택Project: Gradle ProjectSpring Boot: 2.3.x Language: Ja
새로운 할인 정책을 확장해보자.악덕 기획자 : 서비스 오픈 직전에 할인 정책을 지금처럼 고정 금액 할인이 아니라 좀 더 합리적인 주문 금액당 할인하는 정률% 할인으로 변경하고 싶다.예를 들어 기존 정책은 VIP가 10000원을 주문하든 20000원을 주문하든 항상 10
스프링 컨테이너가 생성되는 과정을 알아보자!스프링 컨테이너는 new AnnotationConfigApplicationContext으로 객체를 생성하면서, AppConfig를 파라미터로 넘기고, 반환 값으로 applicaitonContext를 가지게 된다.스프링 컨테이너
이전까지 JAVA 기반 설정파일과 XML 기반 설정파일을 읽어 BeanDefinition을 만들어 스프링 컨테이너를 생성하며 학습을 하였다.그럼으로써 OCP. DIP 원칙을 지키며 객체지향 프로그래밍 원칙인 SOLID도 지킬 수 있었다.하지만, 아직 고려해야할 부분이
지금까지 학습을 진행하며 작성한 코드들에서는 스프링 빈을 등록하기 위해 @Bean 어노테이션을 붙여주거나 <bean>이라는 XML 태그를 붙혀서 직접 설정 정보에 스프링 빈을 나열했다.이전까지는 간단하게 추가할 수 있었지만, 앞으로 만들어야 할 스프링 빈이 수 백
생성자를 통해 의존관계를 자동 주입받는 방식으로 생성자 호출시점에 딱 1번 호출되는 것이 보장된다.불편, 필수 의존관계에 사용된다.DI된 스프링 빈들이 final 키워드를 붙혀 필수 값인 경우 생성자 주입을 통해 의존관계주입한다.생성자가 하나인 경우 @Autowired
Entity란 DB에서 영속적으로 저장된 데이터를 자바 객체로 매핑하여 '인스턴스의 형태'로 존재하는 데이터를 말한다. 스프링 프로젝트가 시작될 때 DB 연결, 소켓연결, 기타 등등 시간이 걸리기에 애플리케이션 시작 지점에 필요한 연결을 미리 해두고, 애플리케이션 종료
스프링 빈(Bean) : 스프링 컨테이너에서 관리하는 자바 객체스코프 : 존재할 수 있는 범위즉, 빈 스코프는 스프링 빈이 존재할 수 있는 범위를 뜻한다.지금까지는 스프링 빈이 스프링 컨테이너의 시작과 함께 생성되어서 스프링 컨테이너가 종료될 때까지 유지된다고 학습하였
클라이언트 = 호출서버 = 응답이것을 클래스와 코드 단위로 가져왔다.라고 생각하면 된다. 호출되는 코드를 서버 코드라고 하면, 이 코드를 호출하는 모든 코드(객체, 클래스)가 클라이언트 코드이다. MemberRepository라는 인터페이스가 있고 MemberServ
'모든 개발자를 위한 HTTP 웹 기본 지식' 수업을 듣고 정리한 내용입니다. 🔔 인터넷(Internet)이란?인터넷이라는 용어는 여러 통신망을 하나로 연결한다는 의미의 '인터 네트워크(inter-network)'에서 시작되었으며, 이제는 전 세계 컴퓨터들을 하나로
HTTP(HyperText Transfer Protocol)초기에는 문서를 전달하기 위해 고안된 프로토콜이었다.현재는 거의 모든 것을 HTTP 프로토콜에 담아서 보내고 있다.HTML, TEXT, IMAGE, 음성, 영상, 파일, JSON, XML거의 모든 형태의 데이
'모든 개발자를 위한 HTTP 웹 기본 지식' 수업을 듣고 정리한 내용입니다. URI, URL, URN 세 가지의 차이점은 무엇일까?URI(Uniform Resource Identifier)Uniform : 리소스 식별하는 통일된 방식Resource : 자원, URI
'모든 개발자를 위한 HTTP 웹 기본 지식' 수업을 듣고 정리한 내용입니다. 요구사항 : 회원 정보 관리 API를 만들어라회원 목록 조회 /read-member-list 회원 조회 /read-member-by-id회원 등록 /create-member회원 수정 /upd
'모든 개발자를 위한 HTTP 웹 기본 지식' 수업을 듣고 정리한 내용입니다. (1) 쿼리 파라미터를 통한 데이터 전송GET 에서 많이 사용한다.주로 정렬 필터(검색어)(2) 메세지 바디를 통한 데이터 전송POST , PUT , PATCH 에서 주로 사용한다.회원 가입
'모든 개발자를 위한 HTTP 웹 기본 지식' 수업을 듣고 정리한 내용입니다. 상태 코드 : 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능1xx(Informational) : 요청이 수신되어 처리 중2xx(Successful) : 요청 정상 처리3xx(R
'모든 개발자를 위한 HTTP 웹 기본 지식' 수업을 듣고 정리한 내용입니다. 💡 header-field = field-name":"OWS field-value OWSOWS : 띄어쓰기 허용field-name : 대소문자 구분하지 않는다. HTTP 헤더 용도HTTP
'모든 개발자를 위한 HTTP 웹 기본 지식' 수업을 듣고 정리한 내용입니다. 클라이언트에서 start.jpg 이미지를 요청한다.서버에서는 해당 이미지가 있으면 응답을 줘야하는데, 이미지의 HTTP 헤더 + 바디를 합쳐 대략 1.1m 정도 용량의 데이터를 응답한다.클라
추가로 필요한 내용은 지금까지 학습한 내용을 기반으로 필요시 검색을 통하여 습득하기❗️(정확하지 않은 자료가 많기에 항상 의심하면서 정리하기) 웹 기술들은 모두 HTTP를 기반으로 구현Django, Spring, Node.js 등 이제 스프링 MVC 같은 웹 프레임워크
'스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 수업을 듣고 정리한 내용입니다. 클라이언트와 서버간에 통신할 때 HTTP를 기반으로 통신한다.서버 간에 데이터를 주고받을 때도 HTTP를 사용한다. 웹 서버(Web Server)HTTP 기반으로 동작정적 리소스 제공
'스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 수업을 듣고 정리한 내용입니다. ✔️ 서버에서 처리해야하는 업무(1) 만약, 웹 애플리케이션 서버 직접 구현이라면? 여기서 의미있는 비즈니스 로직 : 비즈니스 로직 실행(데이터베이스에 저장 요청)하지만, 실행하기 위
'스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 수업을 듣고 정리한 내용입니다. 고정된 HTML 파일, CSS, JS, 이미지, 영상 등을 제공한다.주로 웹 브라우저 동적으로 필요한 HTML 파일을 생성해서 전달웹 브라우저 : HTML 해석 HTML이 아니라 데이
'스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 수업을 듣고 정리한 내용입니다. 스프링 부트 환경에서 서블릿을 등록하고 사용해보자.참고서블릿은 톰캣 같은 웹 애플리케이션 서버를 직접 설치하고, 그 위에 서블릿 코드를 클래스 파일로 빌드해서 올린 다음, 톰캣 서버를
'스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 수업을 듣고 정리한 내용입니다. HTTP message body 에 데이터를 직접 담아서 요청HTTP API에서 주로 사용JSON, XML, TEXT에서 사용되는 방식데이터 형식은 주로 JSON을 사용POST, PU
'스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 수업을 듣고 정리한 내용입니다. 회원은 이름(username)과 나이(age) 정보를 가진 도메인 객체를 만들고 회원 정보를 저장하고 조회하는 기능을 구현해보자!(1) 회원 정보이름: username나이: age(2
'스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 수업을 듣고 정리한 내용입니다. 서블릿, JSP, MVC 패턴에서 사용한 MVC패턴의 한계점인 공통 처리가 힘들다.이 부분을 해결하기 위해 프론트 컨트롤러 패턴을 사용한다고 했다.공통 코드가 모든 컨트롤러에 산재되어
'스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 수업을 듣고 정리한 내용입니다. 이전 챕터에서 직접 만든 MVC 프레임워크와 스프링 MVC을 비교해보자❗️ 직접 만든 MVC 프레임워크 구조 SpringMVC 구조 FrontController라 부르던 서블릿은 Di
스프링 부트 스타터 사이트로 이동해서 스프링 프로젝트 생성https://start.spring.io프로젝트 선택Project: Gradle ProjectLanguage: Java Spring Boot: 2.4.xProject MetadataGroup: hell
'스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 수업을 듣고 정리한 내용입니다. 애노테이션 기반의 스링 컨트롤러는 다양한 파라미터를 지원한다.HTTP 헤더 정보를 조회하는 방법을 알아보자 RequestHeaderControllerHttpMethod : HTTP
'스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 수업을 듣고 정리한 내용입니다. 스프링 부트 스타터 사이트로 이동해서 스프링 프로젝트 생성: https://start.spring.io 프로젝트 선택Project: Gradle Project Languag
'스프링 MVC 2편 - 백엔드 웹 개발 활용 기술' 수업을 듣고 정리한 내용입니다. 프로젝트 선택Project: Gradle Project Language: JavaSpring Boot: 2.5.x Project MetadataGroup: helloArtifact:
'스프링 MVC 2편 - 백엔드 웹 개발 활용 기술' 수업을 듣고 정리한 내용입니다. 타임리프에서 반복은 th:each 를 사용한다. 추가로 반복에서 사용할 수 있는 여러 상태 값을 지원한다. BasicController 추가 /resources/templates/ba
'스프링 MVC 2편 - 백엔드 웹 개발 활용 기술' 수업을 듣고 정리한 내용입니다. MVC 1편에서 개발한 상품 관리 프로젝트를 다듬어서 form-start프로젝트에 들어가 있다! 이용하자! 프로젝트 설정 순서(1) form-start 의 폴더 이름을 form 로 변
'스프링 MVC 2편 - 백엔드 웹 개발 활용 기술' 수업을 듣고 정리한 내용입니다. 예를 들어, 기획자가 화면에 보이는 문구가 마음에 들지 않는다고, 상품명이라는 단어를 모두 상품이름으로 고쳐달라고 하면 어떻게 해야할까?여러 화면에 보이는 상품명, 가격, 수량 등,
'스프링 MVC 2편 - 백엔드 웹 개발 활용 기술' 수업을 듣고 정리한 내용입니다. 상품 관리 시스템에 새로운 요구사항이 추가되었다. 요구사항: 검증 로직 추가(1) 타입 검증가격, 수량에 문자가 들어가면 검증 오류 처리 (2) 필드 검증상품명: 필수, 공백X가격:
'스프링 MVC 2편 - 백엔드 웹 개발 활용 기술' 수업을 듣고 정리한 내용입니다. 🔔 목표오류 메시지를 체계적으로 다루어보자. FieldError 생성자파라미터 목록objectName : 오류가 발생한 객체 이름field : 오류 필드rejectedValue :
'스프링 MVC 2편 - 백엔드 웹 개발 활용 기술' 수업을 듣고 정리한 내용입니다. 검증 기능을 지금처럼 매번 코드로 작성하는 것은 상당히 번거롭다. 특히 특정 필드에 대한 검증 로직은 대부분 빈 값인지 아닌지, 특정 크기를 넘는지 아닌지와 같이 매우 일반적인 로직이
'스프링 MVC 2편 - 백엔드 웹 개발 활용 기술' 수업을 듣고 정리한 내용입니다. 데이터를 등록할 때와 수정할 때는 요구사항이 다를 수 있다. 📣 등록시 기존 요구사항(1) 타입 검증가격, 수량에 문자가 들어가면 검증 오류 처리(2) 필드 검증상품명: 필수, 공백
'스프링 MVC 2편 - 백엔드 웹 개발 활용 기술' 수업을 듣고 정리한 내용입니다. 홈 화면 - 로그인 전 회원 가입로그인홈 화면 - 로그인 후본인 이름(OO님 환영합니다.) 상품 관리로그아웃보안 요구사항로그인 사용자만 상품에 접근하고, 관리할 수 있음로그인 하지 않
'스프링 MVC 2편 - 백엔드 웹 개발 활용 기술' 수업을 듣고 정리한 내용입니다. 🔔 목표앞서 쿠키에 중요한 정보를 보관하는 방법은 여러가지 보안 이슈가 있었다. 이 문제를 해결하려면 결국 중요한 정보를 모두 서버에 저장해야 한다.그리고 클라이언트와 서버는 추정
'스프링 MVC 2편 - 백엔드 웹 개발 활용 기술' 수업을 듣고 정리한 내용입니다. ✓ 시작 전, 요구사항홈 화면 - 로그인 후본인 이름 (OO님 환영합니다.)상품 관리로그아웃📣 공통 관심 사항요구사항을 보면 로그인 한 사용자만 상품 관리 페이지에 들어갈 수 있어야
'스프링 MVC 2편 - 백엔드 웹 개발 활용 기술' 수업을 듣고 정리한 내용입니다. spring initializr 실행 성공 스프링이 아닌 순수 서블릿 컨테이너는 예외를 어떻게 처리하는지 알아보자. 서블릿 예외 처리 방법Exception : 예외response.se
'스프링 MVC 2편 - 백엔드 웹 개발 활용 기술' 수업을 듣고 정리한 내용입니다. 📣 HTML 오류 페이지 vs API 오류 메시지HTML 페이지는 각 오류에 맞는 (400, 4xx 등) 오류 페이지를 만들어서 고객에게 오류 화면을 보여주면 된다.API는 각 오류
'스프링 MVC 2편 - 백엔드 웹 개발 활용 기술' 수업을 듣고 정리한 내용입니다. 프로젝트 생성 문자 🔛숫자 : 애플리케이션을 개발하다 보면 타입을 변환해야 하는 경우가 상당히 많다. String data = request.getParameter("data")➡
'스프링 MVC 2편 - 백엔드 웹 개발 활용 기술' 수업을 듣고 정리한 내용입니다. 일반적으로 사용하는 HTML Form을 통한 파일 업로드를 이해하려면 먼저 폼을 전송하는 다음 두 가지 방식의 차이를 이해해야 한다! HTML 폼 전송 방식application/x-w
ArgumentResolver 적용전을 대상으로 한다.스프링 인터셉터 호출 흐름정상 흐름preHandle : 컨트롤러 호출 전에 호출된다. (더 정확히는 핸들러 어댑터 호출 전에 호출된다.) preHandle 의 응답값이 true 이면 다음으로 진행하고, false 이
프로젝트 초기 설정 해줘야 한다. (블로그 초기 설정 참고하기)css 추가(css 추가는 자료 찾아보면 금방 나온다.) domain/member/Member domain/member/MemberRepository domain/login/LoginService domai
현재 h2.sh가 있는 위치경로를 복사한다. 터미널을 열어서 경로를 만들어준다. 실행 저장한 설정 : Generic H2 (Embedded)설정 이름 : Generic H2 (Embedded)JDBC URL을 어떻게 설정하나면은첫 경로 : jdbc:h2: + 저장 하
자바 ORM 표준 JPA 프로그래밍 - 기본편 수업을 듣고 정리한 내용입니다. JPA의 내부 동작 방식객체와 관계형 데이터베이스 테이블을 올바르게 매핑하는 방법테이블이 생성될 때마다 CRUD SQL을 다 만들어줘야 한다.자바 객체 ↔️ SQL 과정을 반복➡️ 너무 비효
자바 ORM 표준 JPA 프로그래밍 - 기본편 수업을 듣고 정리한 내용입니다. ✔️ H2 데이터베이스http://www.h2database.com/최고의 실습용 DB가볍다.(1.5M)웹용 쿼리툴 제공MySQL, Oracle 데이터베이스 시뮬레이션 기능 시퀀스,
자바 ORM 표준 JPA 프로그래밍 - 기본편 수업을 듣고 정리한 내용입니다. 🔔 JPA에서 가장 중요한 2가지객체와 관계형 데이터베이스 매핑하기(ORM) : DB, 객체 등 설계와 관련된 부분이다.영속성 컨텍스트 : 실제 JPA가 내부적으로 어떻게 동작하는지와 관련
자바 ORM 표준 JPA 프로그래밍 - 기본편 수업을 듣고 정리한 내용입니다. 🔔 엔티티 매핑객체와 테이블 매핑 : @Entity, @Table필드와 컬럼 매핑 : @Column기본 키 매핑 : @Id연관관계 매핑 : @ManyToOne, @JoinColumn @En
자바 ORM 표준 JPA 프로그래밍 - 기본편 수업을 듣고 정리한 내용입니다. 객체지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것이다.방향(Direction) : 단방향, 양방향다중성(Multiplicity) : 다대일(N:1), 일대다(1:N), 일대일
자바 ORM 표준 JPA 프로그래밍 - 기본편 수업을 듣고 정리한 내용입니다. ✔️ 연관관계 매핑시 고려사항 3가지(1) 다중성(2) 단방향, 양방향(3) 연관관계의 주인1\. 다중성다대일 : @ManyToOne일대다 : @OneToMany일대일 : @OneToOne
자바 ORM 표준 JPA 프로그래밍 - 기본편 수업을 듣고 정리한 내용입니다. 🔔 고급 매핑상속 관계 매핑 : 객체의 상속 관계를 데이터베이스에 어떻게 매핑하는지 다룬다.@MappedSuperClass : 등록일, 수정일 같이 여러 엔티티에서 공통으로 사용하는 매핑
자바 ORM 표준 JPA 프로그래밍 - 기본편 수업을 듣고 정리한 내용입니다. ✏️ 들어가기 전에프록시와 즉시로딩, 지연로딩 : 객체는 객체 그래프로 연관된 객체들을 탐색한다. 그런데 객체가 데이터베이스에 저장되어 있으므로 연관된 객체를 마음껏 탐색하기는 어렵다. JP
자바 ORM 표준 JPA 프로그래밍 - 기본편 수업을 듣고 정리한 내용입니다. 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶으면 영속성 전이(transitive persistence) 기능을 사용하면 된다.JPA는 CASCADE 옵션으
자바 ORM 표준 JPA 프로그래밍 - 기본편 수업을 듣고 정리한 내용입니다. ✏️ 이번 Chapter 중요한 것임베디드 타입(복합 값 타입), 값 타입 컬렉션이 중요하다! ✔️ 엔티티 타입@Entity로 정의하는 객체이다.데이터가 변해도 식별자로 지속해서 추적 가능하
자바 ORM 표준 JPA 프로그래밍 - 기본편 수업을 듣고 정리한 내용입니다. JPA는 복잡한 검색 조건을 사용해서 엔티티 객체를 조회하는 다양한 쿼리 기술을 지원한다.✏️ JPA가 지원하는 다양한 쿼리 방법JPQL : 표준 문법JPA Criteria, QueryDSL
자바 ORM 표준 JPA 프로그래밍 - 기본편 수업을 듣고 정리한 내용입니다. ✔️ 나이가 평균보다 많은 회원 ✔️ 한 건이라도 주문한 고객 \[NOT] EXISTS (subquery) : 서브쿼리에 결과가 존재하면 참이다.{ALL | ANY | SOME} (subqu
자바 ORM 표준 JPA 프로그래밍 - 기본편 수업을 듣고 정리한 내용입니다. 경로 표현식 : .을 찍어 객체 그래프를 탐색하는 것이다.여기서 m.username, m.team, m.orders, t.name이 모두 경로 표현식을 사용한 예다. ✔️ 경로 표현식의 용어
자바 ORM 표준 JPA 프로그래밍 - 기본편 수업을 듣고 정리한 내용입니다. ✔️ Type조회 대상을 특정 자식으로 한정할 수 있다.ex) Item 중에 Book, Movie를 조회해라JPQLSQL ✔️ TREAT(JPA 2.1)자바의 타입 캐스팅과 유사하다.상속 구
이전 글 h2 database 초기 설정에서 첫 경로 jdbc:h2: + 저장 하고자 하는 파일 경로접속 경로 jdbc:h2:tcp://localhost/~/ + 저장된 하는 파일 경로라고 적고 사이드 프로젝트 or 복습할 때 이걸 적용하니 이게 계속 실행되서 구글링을
스프링 부트와 JPA 활용 1 - 웹 애플리케이션 개발 수업을 듣고 정리한 내용입니다. 강의는 JUnit4를 기준으로 하기 때문에 build.gradle 에 있는 다음 부분을 꼭 직접 추가해야한다. 해당 부분을 입력하지 않으면 JUnit5로 동작한다.Enable ann
스프링 부트와 JPA 활용 1 - 웹 애플리케이션 개발 수업을 듣고 정리한 내용입니다. 실제 동작하는 화면을 먼저 확인한다.기능 목록(1) 회원 기능회원 등록회원 조회(2) 상품 기능상품 등록상품 수정상품 조회(3) 주문 기능상품 주문주문 내역 조회주문 취소(4) 기타
스프링 부트와 JPA 활용 1 - 웹 애플리케이션 개발 수업을 듣고 정리한 내용입니다. (1) 회원 기능 회원 등록회원 조회 (2) 상품 기능상품 등록 상품 수정 상품 조회(3) 주문 기능상품 주문주문 내역 조회 주문 취소 예제를 단순화 하기 위해 다음 기능은 구현하지
스프링 부트와 JPA 활용 1 - 웹 애플리케이션 개발 수업을 듣고 정리한 내용입니다. 구현 기능회원 등록 회원 목록 조회순서회원 엔티티 코드 다시 보기회원 리포지토리 개발회원 서비스 개발회원 기능 테스트 MemberRepository ✔️ 기술 설명(애노테이션)@Re
스프링 부트와 JPA 활용 1 - 웹 애플리케이션 개발 수업을 듣고 정리한 내용입니다. 구현 기능상품 등록상품 목록 조회 상품 수정순서상품 엔티티 개발(비즈니스 로직 추가)상품 리포지토리 개발상품 서비스 개발상품 기능 테스트 ItemaddStock()파라미터로 넘어온
스프링 부트와 JPA 활용 1 - 웹 애플리케이션 개발 수업을 듣고 정리한 내용입니다. 구현 기능상품 주문 주문 내역 조회 주문 취소 순서주문 엔티티, 주문상품 엔티티 개발주문 리포지토리 개발주문 서비스 개발주문 검색 기능 개발주문 기능 테스트 Order생성 메서드(
스프링 부트와 JPA 활용 1 - 웹 애플리케이션 개발 수업을 듣고 정리한 내용입니다. 홈 화면 회원 기능회원 등록회원 조회 상품 기능상품 등록 상품 수정 상품 조회주문 기능상품 주문주문 내역 조회 주문 취소 상품 등록상품 목록상품 수정변경 감지와 병합 상품 주문 Ho
인프런 수업 강의를 듣고 정리한 내용입니다. 📣 수업을 시작하기 전에API 개발과 성능 최적화✔️ REST API 개발등록, 수정, 조회 REST API 개발API 개발 실무 노하우무엇보다 성능 최적화가 중요하다!좋지 않은 성능을 써보다가 → 좋은 성능으로 변경한다.
인프런 수업 강의를 듣고 정리한 내용입니다. 영상에서 전반적인 수업 진도 방향 설명성능에 주로 영향을 주는 것은 조회 API이다.조회 API를 어떻게 최적화시킬 수 있는지를 다뤄보자! 시작하기전, create로 변경하자! (테스트 하기위해 실행할 때마다 이전 입력 내
인프런 수업 강의를 듣고 정리한 내용입니다. 주문 + 배송정보 + 회원을 조회하는 API를 만들자지연 로딩 때문에 발생하는 성능 문제를 단계적으로 해결해보자.💡 참고지금부터 설명하는 내용은 정말 중요합니다. 실무에서 JPA를 사용하려면 100% 이해해야 한다.안그러면
인프런 수업 강의를 듣고 정리한 내용입니다. 이전까지 xxxtoOne(OneToOne, ManyToOne) 관계만 있었다.이번에는 컬렉션인 일대다 관계(OneToMany)를 조회하고, 최적화하는 방법을 알아보자! OrderApiControllerorderItem, it
인프런 수업 강의를 듣고 정리한 내용입니다. OrderApiController 추가 OrderQueryRepository OrderQueryDto OrderItemQueryDtoQuery : 루트 1번, 컬렉션 N 번 실행xxxToOne(N:1, 1:1) 관계들을 먼저
인프런 수업 강의를 듣고 정리한 내용입니다. Open Session In View: 하이버네이트 Open EntityManager In View: JPA (관례상 OSIV라 한다.) spring.jpa.open-in-view : true 기본값이 기본값을 뿌리면서 애플
질문 : 컬렉션 페치조인에서 컬렉션이 무엇이고 페치 조인이 무엇이에요?✔️ 컬렉션이란?@OneToMany 관계가 있는 것은 보통 자바의 컬렉션 (Collectiions, List)를 사용한다.이것을 컬렉션이라고 합니다. ✔️ 페치 조인컬렉션에 fetch join을 사용
실전! 스프링 데이터 JPA 프로젝트 생성은 수업내용 보기! ✔️ 스프링 부트 라이브러리 살펴보기spring-boot-starter-web spring-boot-starter-tomcat: 톰캣 (웹서버) spring-webmvc: 스프링 웹 MVCspring-boot
실전! 스프링 데이터 JPA을 듣고 정리한 내용입니다. Member와 Team은 다대일 관계 외래키(FK)는 Member가 갖는다. Member 엔티티@Setter : 가급적 사용하지말자.@NoArgsConstructor AccessLevel.PROTECTED : 기
실전! 스프링 데이터 JPA을 듣고 정리한 내용입니다. 순수 JPA 기반 리포지토리를 만들어보고 스프링 데이터 JPA를 적용해보자!✏️ 기본 CRUD저장변경 → 변경감지 사용삭제전체 조회단건 조회카운트 💡 참고JPA에서 수정은 변경감지 기능을 사용하면 된다.트랜잭션
실전! 스프링 데이터 JPA을 듣고 정리한 내용입니다. ✏️ 스프링 데이터 JPA가 제공하는 쿼리 메서드 기능메서드 이름으로 쿼리 생성메서드 이름으로 JPA NamedQuery 호출@Query 어노테이션을 사용해서 리포지토리 인터페이스에 쿼리 직접 정의 메서드 이름을
실전! 스프링 데이터 JPA 수업을 듣고 정리한 내용입니다. ✏️ 페이징, 정렬 조건 예시검색 조건 : 나이 10살정렬 조건 : 이름으로 내림차순페이징 조건 : 첫 번째 페이지, 페이지당 보여줄 데이터는 3건 JPA 페이징 리포지토리 JPA 페이징 테스트 코드 실행 결
실전! 스프링 데이터 JPA 수업을 듣고 정리한 내용입니다. 스프링 데이터 JPA 리포지토리는 인터페이스만 정의하고 구현체는 스프링이 자동 생성해준다. 스프링 데이터 JPA가 제공하는 인터페이스를 직접 구현하면 구현해야 하는 기능이 너무 많다. 다양한 이유로 인터페이스
실전! 스프링 데이터 JPA 수업을 듣고 정리한 내용입니다. ✔️ 스프링 데이터 JPA가 제공하는 공통 인터페이스의 구현체SimpleJpaRepositoryorg.springframework.data.jpa.repository.support.SimpleJpaReposi
실전! 스프링 데이터 JPA 수업을 듣고 정리한 내용입니다. Specifications와 Query By Example은 실무에서 거의 사용하지 않는다.그러므로, 정리하지 않고 넘어가기실무에서는 JPA Criteria를 거의 쓰지 않는다. (진짜 복잡한 코드를 사용한다
Querydsl 수업을 듣고 정리한 내용입니다. 가장 많이 사용하는 기술동적 쿼리 문제도 해결해준다.✔️ jpql vs querydsl여기서는 Member mwhere m.username : 중간에 띄워쓰기를 하지 않아 오류가 발생한다.문법오류를 자바 컴파일러가 알 수
Querydsl 수업을 듣고 정리한 내용입니다. 엔티티 클래스 ERD Member 엔티티@Setter : 실무에서 가급적 Setter는 사용하지 않기 @NoArgsConstructor AccessLevel.PROTECTED : 기본 생성자 막고 싶은데, JPA 스팩
Querydsl 수업을 듣고 정리한 내용입니다. 이제 이 예제로 실행한다. EntityManager로 JPAQueryFactory 생성Querydsl은 JPQL 빌더JPQL : 문자 (실행 시점 오류) vs Querydsl : 코드 (컴파일 시점 오류)JPQL : 파
Querydsl 수업을 듣고 정리한 내용입니다. ✔️ 집합 함수JPQL이 제공하는 모든 집합 함수를 제공한다.tuple은 프로젝션과 결과반환에서 공부한다. 실행 결과 ✔️ GroupBy 사용groupBy를 사용하여 그룹별로 원하는 결과를 얻어낼 수 있다.그룹화된 결과
Querydsl 수업을 듣고 정리한 내용입니다. ✏️ 프로젝션이란?select 대상을 지정하는 것이다. 프로젝션 대상이 하나면 타입을 명확하게 지정할 수 있다.프로젝션 대상이 둘 이상이면 튜플이나 DTO로 조회한다. 실행 결과 프로젝션 대상이 둘 이상일 때 사용한다.
Querydsl 수업을 듣고 정리한 내용입니다. 🔔 동적 쿼리를 해결하는 두 가지 방식BooleanBuilderWhere 다중 파라미터 사용 BooleanBuilder 사용BooleanBuilder를 통한 동적 쿼리 생성은 빌더를 생성 후 필요한 조건을 null 확인
Querydsl 수업을 듣고 정리한 내용입니다. MemberJpaRepository - 순수 JPA 리포지토리 MemberJpaRepositoryTest - 순수 JPA 리포지토리 테스트 MemberJpaRepository - 순수 JPA 리포지토리에 Querydsl
Querydsl 수업을 듣고 정리한 내용입니다. MemberRepository - 순수 JPA 리포지토리 MemberRepositoryTest - 스프링 데이터 JPA 테스트Querydsl 전용 기능인 회원 search를 작성할 수 없다. → 사용자 정의 리포지토리가
Querydsl 수업을 듣고 정리한 내용입니다. 지금부터 소개하는 기능은 제약이 커서 복잡한 실무 환경에서 사용하기는 많이 부족하다!그래도 스프링 데이터에 제공하는 기능이므로 어떤 기능인지 간단히 알아보고, 어떤 점이 부족한지 알아본다. 공식 URL(https:
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 인프런 강의를 수강 후, 복습하고자 하는 생각에 공부를 시작하게 되었다.환경설정은 인프런 강의 때 배운 내용을 토대로 할 것이다.이외 소스들은 책 내용을 참고하려고 한다. 인텔리제이에는 이클립스의 워크스페이스Workspa
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 스프링 부트에서 테스트 코드를 작성 대부분의 서비스 회사가 테스트 코드에 관해 요구하고 있다.요즘들어, 코딩 테스트를 알고리즘이 아닌 프로젝트를 만들고, 단위 테스트를 필수 조건으로 두었다.취업과 이직을 하기 위해서는 테
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 JPA : 자바 표준 ORMORM : 객체를 매핑하는 것SQL Mapper : 쿼리를 매핑하는 것현업 프로젝트 대부분이 애플리케이션 코드보다 SQL로 가득하게 된다.SQL로만 가능하니 각 테이블마다 기본적인 CRUD SQ
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 🔔 API를 만들기 위해 총 3개의 클래스가 필요하다!Request 데이터를 받을 DtoAPI 요청을 받은 Controller트랜잭션, 도메인 기능 간의 순서를 보장하는 Service 💡 참고Service에서 비즈니스
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 템플릿 엔진 : 지정된 템플릿 양식과 데이터가 합쳐서 HTML 문서를 출력하는 소프트웨어서버 템플릿 엔진 : JSP, Freemarker클라이언트 템플릿 엔진 : React, Vue ✔ 서버 템플릿 엔진서버 템플릿 엔진을
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 를 공부하고 정리한 내용입니다. 스프링 시큐리티 : 막강한 인증과 인가(or 권한 부여) 기능을 가진 프레임워크스프링 기반의 애플리케이션에서는 보안을 위한 표준이다.인터셉터, 필터 기반의 보안 기능을 구현하는 것보다 스
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 를 공부하고 정리한 내용입니다. 구글 로그인을 프로젝트에 적용해보기✔️ User 클래스User 클래스는 사용자 정보를 담당할 도메인domain/user/User.java@Enumerated(EnumType.STRING)J
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 를 공부하고 정리한 내용입니다. ✏ 프로그래밍에서 개선이 필요한 나쁜 코드대표적으로 같은 코드가 반복되는 부분이다.같은 코드를 게속해서 복사&붙여넣기로 반복하게 만든다면 이후에 수정이 필요할 때 모든 부분을 하나씩 찾아가
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 를 공부하고 정리한 내용입니다. 네이버 오픈 API(https://developers.naver.com/apps/ 네이버1회원 이름, 이메일, 프로필 사진은 필수이다. 네이버2서비스 URL은 필수이다.Callba
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 를 공부하고 정리한 내용입니다. 🔔 클라우드 몇 가지 형태1\. Infrastructure as a Service (IaaS, 아이아스, 이에스)기존 물리 장비를 미들웨어와 함께 묶어둔 추상화 서비스이다.가상머신, 스토
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 를 공부하고 정리한 내용입니다. 웹 서비스의 백엔드를 다룬다고 했을 때 애플리케이션 코드를 작성하는 것만큼 중요한 것이 데이터베이스를 다루는 것이다.이번 장에서는 데이터베이스를 구축하고 이전에 만든 EC2 서버와 연동을
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 를 공부하고 정리한 내용입니다. 1 ~ 5장까지는 스프링 부트로 서비스 코드를 개발했고, 6 ~ 7장까지는 배포 환경을 구성했다!이제 이들을 조합해 실제로 서비스를 배포해보자! 먼저, EC2로 접속한다.을 실행한다.테스트
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 를 공부하고 정리한 내용입니다. RDS는 MYSQL을 사용 중이다. 이 MYSQL에서 스프링부트 프로젝트를 실행하기 위해선 몇 가지 작업이 필요하다.🔔 진행할 작업테이블 생성 : H2에서 자동 생성해주던 테이블들을 MY