플러그인: 라이브러리 디펜던시까지 관리 리포지토리: mavenCentral()에서 라이브러리를 다운로드 받겠다디펜던시 (의존관계): start.spring.io에서 선택한 라이브러리 전부여기에 등록된 라이브러리가 의존하는 라이브러리까지 모두 포함됨클래스에 getter/
업로드중..회원은 상품 여러개 주문할 수 있음한 주문에 여러 상품 포함 가능상품 - 상속구조업로드중..다대다 관계는 운영에 사용하면 안됨 > 일대다 관계로 풀어내야 함양방향 연관관계는 지양하자 > 설계단계에는 단방향 연관관계가 좋음객체에서는 다대다 관계가 가능하지만 관
계층형 구조repository에서 디비 접근controller, service, repository는 (entity를 포함하는) domain 참조단방향으로 흐르지만 controller에서 repository 직접 접근도 가능controller, web: 웹 계층serv
순서: 회원 엔티티 코드 다시 보기 > 회원 리포지토리 개발 > 서비스 개발 > 기능 테스트스프링이 entity manager를 만들어서 주입(injection)해줌JPA 쿼리를 직접 입력하여 사용findAll() 등의 메서드에 사용됨쿼리 내 :variable는 .se
본 문서는 인프런의 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 (김영한)(https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-JPA-%ED%99%9C%EC
본 문서는 인프런의 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 (김영한) 강의를 공부하며 작성한 개인 노트입니다. 🌻 주문 기능 테스트 현재 테스트는 JPA 공부를 위해 디비도 사용하여 테스트하지만, 더 좋은 테스트는 순수 자바만을 이용한 단위 테
src/main/java/jpabook.jpashop/controller/에 Controller 클래스 모음매번 include해야함실무에서 유용함코드의 중복 적음Member 엔티티와 MemberForm의 분리: 컨트롤러에서 데이터를 받아올 때의 validation과 실
본 문서는 인프런의 자바 ORM 표준 JPA 프로그래밍 - 기본편 (김영한)(https://www.inflearn.com/course/ORM-JPA-Basic애플리케이션은 객체지향, 데이터베이스는 관계형 > 객체를 관계형 DB에 관리CRUD, SQL를 자바 객
본 문서는 인프런의 자바 ORM 표준 JPA 프로그래밍 - 기본편 (김영한) 강의를 공부하며 작성한 개인 노트입니다. 🥋 프로젝트 생성 h2 설치 및 사용법 🛼 애플리케이션 개발
본 문서는 인프런의 자바 ORM 표준 JPA 프로그래밍 - 기본편 (김영한)(https://www.inflearn.com/course/ORM-JPA-BasicJPA에서 가장 중요한 2가지 - 객체와 관계형 데이터베이스 매핑 (ORM) & 영속성 컨텍스트Enti
본 문서는 인프런의 자바 ORM 표준 JPA 프로그래밍 - 기본편 (김영한)(https://www.inflearn.com/course/ORM-JPA-Basic객체와 테이블 매핑: @Entity, @Table필드와 컬럼 매핑: @Column기본 키 매핑: @Id
본 문서는 인프런의 자바 ORM 표준 JPA 프로그래밍 - 기본편 (김영한)(https://www.inflearn.com/course/ORM-JPA-Basic용어방향, Direction: 단방향, 양방향다중성, Multiplicity: 다대일(N:1), 일대다
본 문서는 인프런의 자바 ORM 표준 JPA 프로그래밍 - 기본편 (김영한)(https://www.inflearn.com/course/ORM-JPA-Basic연관관계 매핑시 고려사항 3가지다중성 (예) 다대일, 일대다, 일대일, 다대다단방향/양방향테이블외래키
객체는 상속 관계가 있음관계형 디비는 상속 관계가 없음슈퍼타입/서브타입 관계 모델링 기법이 객체 상속과 유사상속관계 매핑: 객체의 상속구조와 디비의 슈퍼타입/서브타입 관계 매핑@Inheritance(strategy=IneheritanceType.XXX)JOINED: 조
본 문서는 인프런의 자바 ORM 표준 JPA 프로그래밍 - 기본편 (김영한)(https://www.inflearn.com/course/ORM-JPA-Basicem.find() - 디비를 통해 실제 엔티티 객체 조회em.getReference() - 디비 조회
본 문서는 인프런의 자바 ORM 표준 JPA 프로그래밍 - 기본편 (김영한)(https://www.inflearn.com/course/ORM-JPA-Basic@Entity데이터가 변해도 식별자로 지속해서 추적 가능(예) 회원 엔티티의 키/나이 값을 변경해도 식
본 문서는 인프런의 자바 ORM 표준 JPA 프로그래밍 - 기본편 (김영한) 강의를 공부하며 작성한 개인 노트입니다. 🚡 소개 JPA는 JPQL, JPA Criteria, QueryDSL, 네이티브 SQL, JDBC API 등의 다양한 쿼리 방법을 지원한다 Quer
본 문서는 인프런의 자바 ORM 표준 JPA 프로그래밍 - 기본편 (김영한)(https://www.inflearn.com/course/ORM-JPA-Basic경로 표현식: .(점)을 찍어 객체 그래프를 탐색하는 것(예) m.username (상태 필드), fr
본 문서는 인프런의 실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 (김영한) 강의를 공부하며 작성한 개인 노트입니다. 회원 등록 API @RestController - @Controller와 @ResponseBody 대체 @Valid - M 회원
본 문서는 인프런의 실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 (김영한) 강의를 공부하며 작성한 개인 노트입니다.간단한 주문 조회지연 로딩 때문에 발생하는 성능 문제를 단계적으로 해결해보자XToOne의 최적화 (ex) ManyToOne, OneT
본 문서는 인프런의 실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 (김영한) 강의를 공부하며 작성한 개인 노트입니다.Lazy 로딩 설정에서 프록시는 데이터를 넘겨받지 않음 프록시를 강제 초기화해서 (orderItems ~ orderItems.stre
본 문서는 인프런의 실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 (김영한) 강의를 공부하며 작성한 개인 노트입니다.Open Session In View - HibernateJPA의 EntityManager = Hibernate의 SessionJPA
본 문서는 인프런의 실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 (김영한) 강의를 공부하며 작성한 개인 노트입니다. 🗂️ 스프링 데이터 JPA 소개 JPA Repository 기본적 CRUD 기능 모두 제공 일반화하기 어려운 기능 메서드 (f
공통 속성을 상속할 엔티티들이 필요할 때 사용부모클래스에 쓴다고 보면 됨. 부모클래스는 엔티티가 되지는 않음. 주로 abstract로 선언자식클래스에는 부모클래스에 정의된 컬럼들이 자동 생성된다https://ict-nroo.tistory.com/129
Upon update queries, JPA, by default, operates queries on all the columns of the corresponding entity. Hence, there is a chance of certain columns uni
말 그대로 데이터베이스에 접근하기 위한 객체서비스와 데이터베이스 간의 연결 담당레포지토리가 여기에 해당계층간 데이터 교환에 사용하는 객체getter/setter 메서드만 가지는 클래스데이터베이스에서 데이터를 얻어 서비스/컨트롤러에 보낼 때 사용Read-Only인 오브젝
Swagger: Rest API를 자동으로 문서화하여 API 호출 및 테스트 과정을 편리하게 해준다Docket: Swagger 프레임워크의 핵심 인터페이스로 쓰이는 Java 객체이자 builderuseDefaultResponseMessages(boolean) - Swa
클라우드 스토리지 프로젝트를 시작하려는데 파일 업로드가 가능한 시스템인 만큼 확장성을 고려하고, 다양한 파일이 업로드 가능한 것이 적합할 것 같아 mongodb를 선택했다build.gradle에 추가MongoDBConfig 클래스를 만들었다@Document(collec
@Enumerated(EnumType.ORDINAL)과 @Enumerated(EnumType.STRING)의 차이를 알아보자DB에 enum 순서값 저장이미 저장된 enum의 순서값은 바꿀 수 없음DB에 enum 문자열값 저장문자열을 저장하기 때문에 DB공간을 낭비하게
Project: Gradle - GroovySpring Boot: 2.3.xLanguage: JavaPackaging: JarJava:11Dependencies: Spring Web, ThymeleafsourceCompatibility: 무슨 자바 버전과 맞는지repo
스프링 부트에서 제공되는 기능/static 폴더에서 찾음내장 톰캣 서버에서 요청을 받아 넘김스프링은 컨트롤러에서 hello-static을 찾음 (컨트롤러가 우선순위를 가지기 때문)그 다음 resources/static에서 찾아서 반환MVC: Model (User int
데이터: 회원 ID, 이름기능: 회원 등록/조회컨트롤러: 웹 MVC 컨트롤러서비스: 핵심 비즈니스 로직 구현리포지토리: 데이터베이ㅇ스에 접근, 도메인 객체를 디비에 저장/관리도메인: 비즈니 도메인 객체 (예) 회원, 주문, 쿠폰인터페이스 사용 이유: 아직 데이터 저장소
스프링 빈을 등록하는 방법:1\. 컴포넌트 스캔과 자동 의존관계 설정2\. 자바 코드로 직접 스프링 빈 등록하기 컨트롤러가 서비스를 통해 기능 작동빈 등록을 통해 가능케 함src/main/java/hello.hellospring/controller에 MemberCont
build.gradle에 dependencysrc/main/java/hello.hellospring/repository에 JdbcTemplateMemberRepository 생성implements MemberRepositoryJdbcTemplate을 사용하도록 스프링
모든 메소드의 호출 시간 측정공통 관심 사항(cross-cutting concern) vs. 핵심 관심 사항(core concern)공통 관심 사항: 시간을 측정하는 로직핵심 관심 사항: 비즈니스 로직 등try-catch 형태로 인해 시간을 측정하는 로직(공통 관심 사