springboot

    JPQL과 QueryDSL에 대해 끄적

    Intro JPA는 객체 중심적으로 코드를 작성할 수 있게 해주는데 그렇게 되면 JPA만으로는 모든 쿼리를 커버할 수 없다. 따라서 JPA는 객체를 검색(조회,select)할 수 있는 다양한 query 방법을 지원한다. JPQL JPA Criteria QueryDSL Native SQL 등등.. 이 포스팅에서는 주로 사용되는 JPQL과 QueryDSL에 대해 다루고자 한다. JPQL의 개념 Java Persistence Query Language JPQL은 엔티티 객체를 조회하는 객체지향 쿼리이다. JPQL은 가장 중요한 객체지향 쿼리 언어이다. JPA는 JPQL을 기반으로 하는 다양한 쿼리 서비스를 지원한다. JPA Criteria, QueryDSL, Natice SQL 등.. JPQL의 특징 SQL과..

    [스프링부트와 JPA 활용 1] Section5. 상품 도메인 개발

    상품 엔티티 개발 (비즈니스 로직 추가) 구현 기능 상품 등록 상품 목록 조회 상품 수정 순서 상품 엔티티 개발 (비즈니스 로직 추가) 상품 리포지토리 개발 상품 서비스 개발, (상품 기능 테스트) item.java 수정 package jpabook.jpashop.domain.item; import jakarta.annotation.ManagedBean; import jakarta.persistence.*; import jpabook.jpashop.domain.Category; import jpabook.jpashop.exception.NotEnoughStockException; import lombok.Getter; import lombok.Setter; import java.util.ArrayList..

    [스프링부트와 JPA 활용 1] Section4. 회원 도메인 개발

    회원 리포지토리 개발 jpashop/src/main/java/jpabook/jpashop/repository/MemberRepository.java 생성 package jpabook.jpashop.repository; import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; import jpabook.jpashop.domain.Member; import org.springframework.stereotype.Repository; import java.util.List; @Repository public class MemberRepository { @PersistenceContext private Enti..

    [스프링부트와 JPA 활용 1] Section3. 애플리케이션 구현 준비

    구현 요구사항 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 애플리케이션 아키텍처 계층형 구조 사용 controller, web : 웹 계층 service : 비즈니스 로직, 트랜잭션 처리 repository : JPA를 직접 사용하는 계층, 엔티티 매니저 사용 domain : 엔티티가 모여 있는 계층, 모든 계층에서 사용 패키지 구조 jpabook.jpashop domain exception repository service web 참고 controller은 repository에도 바로 접근할 수 있는 그러나 단방향으로 설정할 예정 개발 순서 서비스/리포지토리 계층 개발 → 테스트 케이스 작성하여 검증 → 마지막에 웹 계층 적용

    [스프링부트와 JPA 활용 1] Section1. 프로젝트 환경설정

    프로젝트 생성 1. SpringBoot Starter 접속 (Spring Initializr) 2. 설정 3. 세팅 여부 확인 아래와 같이 JpashopApplication의 메소드 실행을 하게 되면, 실행 성공 시 Tomcat started on port(s): 8080 문구가 뜬다. 이후 웹페이지에서 아래 화면을 확인해주면 된다. + 테스트 코드도 확인 4. 플러그인 설치 롬복 사용시 Getter, Setter를 모두 만들어 준다. 라이브러리 살펴보기 1. cmd 창에서 확인 가능 (루트 폴더에서 열기) 2. IntelliJ에서 확인 가능 View 환경설정 Thymleaf 템플릿 엔진을 사용할 예정 (Thymeleaf) Thymeleaf Integrations galore Eclipse, Intell..

    [스프링부트와 JPA 활용 1] Section0. 강좌 소개

    스프링 부트 : 복잡하고 어려운 스프링 기술을 간결하고 쉽게 사용할 수 있도록 도와주는 기술 JPA : 강력한 Java ORM 표준 기술 위 두가지를 사용하면 높은 개발 생산성을 유지하며 빠르게 개발이 가능하다. 강의 목표 : SpringBoot와 JPA 같은 최신 기술을 활요해 웹 어플리케이션 개발을 할 수 있다. 강의 특징 : 예제를 코딩으로 배운다. 1편 - 웹 어플리케이션 개발 프로젝트 환경설정 요구사항 분석 도메인과 테이블 설계 아키텍쳐 구성 핵심 비즈니스 로직 개발 테스트 웹 계층 개발 2편 - API 개발과 성능 최적화 REST API 개발 성능 최적화 학습 방법 전체적인 감을 잡기 이후 부족한 기술들을 스스로 습득하기

    [스프링 핵심 원리] Section1. 객체 지향 설계와 스프링

    인프런 김영한 스승님의 두번째 커리큘럼 시작 !! 자바 진영의 추운 겨울과 스프링의 탄생 자바당 최고 기술 EJB 비용적 부담이 큼 의존적이라 객체 지향 프로그래밍 불가 어렵고 복잡하고 느림 스프링 EJB 컨테이너 대체 단순함의 승리 현재 사실상 표준 기술 하이버네이트 EJB 엔티티빈 기술 대체 JPA 새로운 표준 정의 EJB 엔티티빈 ⇒ 하버네이트 ⇒ JPA JPA 실용성과 표준의 안정성을 갖춘 JPA 탄생 스프링이란? 필수 스프링 프레임워크 - 가장 중요 스프링 부트 - 모든 기술을 편리하게 사용하도록 선택 스프링 데이터 - JPA를 주로 사용, CRUD를 편리하게 스프링 세션 - 세션 기능을 편리하게 스프링 시큐리티 - 보안 관련하여 스프링 Rest Docs - 문서를 편리하게 스프링 배치 - 배치..

    [스프링 입문] Section6. 스프링 DB 접근 기술

    기존에는 메모리에 저장하는 방식 실무에서는 데이터베이스에 데이터들을 저장하여 관리 스프링이 JDBC template 기술 제공 애플리케이션에서 데이터베이스로 SQL을 편리하게 날릴 수 있음 JPA를 쓰면 객체를 바로 DB에 쿼리 없이 저장 가능 스프링 데이터 JPA : JPA를 편리하게 쓸 수 있도록 한 번 감싼 기능 H2 데이터베이스 설치 https://www.h2database.com/html/download-archive.html 에서 1.4.200 버전 설치 1. 데이터 베이스 파일 만들기 JDBC URL : 내 파일 경로 이후에 파일로 접근하면 애플리케이션과 웹 콘솔이 동시에 접근이 안될 수 있음 이후부터는 JDBC URL : jdbc:h2:tcp://localhost/~/test 파일 직접 접..

    [스프링 입문] Section5. 회원 관리 예제 - 웹 MVC 개발

    회원 웹 기능 - 홈 화면 추가 1. .../src/main/java/hello/hellospring/controller/HomeController.java 을 생성해서 홈 컨트롤러 추가 @Controller public class HomeController { @GetMapping("/") //도메인의 첫번째 public String home() { return "home"; //home.html이 호출 } } 2. .../src/main/resources/templates/home.html 을 생성해서 회원 관리용 홈 생성 Hello Spring 회원 기능 회원 가입 회원 목록 3. HelloSpringApplication.java 실행 시 localhost:8080 접속 시 홈 화면에 매핑된 htm..

    [스프링 입문] Section4. 스프링 빈과 의존관계

    컴포넌트 스캔과 자동 의존 관계 설정 화면을 붙이려면 Controller와 View template이 필요 Member Controller가 Member Service를 통해 회원가입하고 조회할 수 있어야 함 ⇒ 의존 관계가 있다 표현 == 멤버 컨트롤러가 멤버 서비스를 의존한다 /src/main/java/hello/hellospring/controller/MemberController.java 생성 MemberService를 Spring Contaioner로부터 받아 쓰도록 ⇒ 새로 생성할 필요 X, 하나만 가져와서 같이 쓰는 것이 나음 결론 : 스프링 컨테이너에 하나만 등록하여 가져다 쓰기! @Controller public class MemberController { private final Mem..