Spring

    JPA에 대해 끄적

    1. JPA JPA = Java Persistence API JPA는 Java 진영에서 ORM 기술 표준으로 사용되는 인터페이스의 모음 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크 자바 어플리케이션과 JDBC 사이에서 동작 2. JDBC 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API 데이터베이스에서 자료를 쿼리하거나 업데이트 하는 방법을 제공 3. ORM 객체와 테이블을 매핑해서 패러다임의 불일치를 개발자 대신 해결 4. JPA 장점 INSERT SQL을 작성하고 JDBC API를 사용하는 지루하고 반복적인 일을 JPA가 대신 처리 → 생산성 개발자가 작성해야 할 SQL문과 JDBC API 코드를 JPA가 대신 처리 → 유지보수 DB 기술에 종속되지 않도록 함 -> 데이터 접근 추..

    [스프링부트와 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 개발 성능 최적화 학습 방법 전체적인 감을 잡기 이후 부족한 기술들을 스스로 습득하기

    [스프링 핵심 원리] Section2. 스프링 핵심 원리 이해1 - 예제 만들기

    프로젝트 생성 Spring Initializr 을 통해 프로젝트 생성 추가 설정 for 속도 비즈니스 요구사항과 설계 회원 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 등급이 있다. 회원 데이터는 자체 DB 구축하거나 외부 시스템과 연동할 수 있다. (미확정) 주문과 할인 정책 회원은 상품을 주문할 수 있다. 회원은 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (추후 변동 가능) 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 미루고 싶다. 최악의 경우 할인을 적용하지 않을 수도 있다.(미확정) 요구 사항을 보면 결정하기 어려운 부분이 있는데 이를 위해 우리는 역할과 구..

    [스프링 핵심 원리] 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..

    [스프링 이것저것] 의존성 주입 (DI) 개념 & 방법

    의존성 주입 의존성 주입 = Dependency Injection = DI 프로그램 디자인이 결합도를 느슨하게 되도록하고 의존관계 역전 원칙과 단일 책임 원칙을 따르도록 클라이언트의 생성에 대한 의존성을 클라이언트의 행위로 분리하는 것 by 위키피디아 의존 관계란? A가 B를 의존한다 = 의존대상 B가 변하면 그것이 A에 영향을 미친다 다양하게 의존 관계를 맺으려면 인터페이스로 추상화 해야 함 ⇒ 실제 구현 클래스와의 관계는 느슨해지고 결합도가 낮아짐 의존 관계 주입이란? 의존관계를 외부에서 결정하고 주입하는 것 클래스 변수를 결정하는 방법 = DI를 구현하는 방법 런타인 시점의 의존관계를 외부에서 주입하여 DI 구현 완성 DI 장점 의존성/종속성 ↓ : 변화가 있더라도 수정할 일이 적다 재사용성 ↑ :..

    [스프링 입문] 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..

    [스프링 입문] Section1. 프로젝트 환경설정

    첫 단추를 잘 끼우자 ..! 프로젝트 생성 사전 준비물 : Java11, IDE(InteliJ) 설치 스프링 부트 스타터 → 스프링 프로젝트 생성 : Spring Initializr Maven, Gradle : 필요한 라이브러리를 가져오고 빌드하는 라이프 사이클까지 관리하는 툴, 요즘 추세는 Gradle Group : 기업 도메인명 Artifact : 프로젝트 Dependencies : 어떤 라이브러리를 가져와 쓸지 선택 Thymeleaf : html을 만들어주는 템플릿 엔진 3. Generate하여 IntelliJ에서 build.gradle 파일을 프로젝트로 open 더보기 Error 그 사이에.. Error가 남 ㅋㅋ A problem occurred configuring root project 어쩌..