이 글은 김영한 님의 Infrean 강의를 학습한 내용을 정리하여 작성합니다. JPA란? Java Persistence API JPA는 데이터베이스 기술이라기보다 애플리케이션의 데이터를 객체지향 관점으로 바라보고 다룰 수 있게 해주는 객체지향 기술이다. -> JPA를 실무에 적용하려면 데이터를 객체지향적으로 다루는 방법과 함께 데이터베이스 성능을 고려한 설정 및 개발 방법을 반드시 함께 익혀야 한다. - 이일민 / Epril 대표 컨설턴트, [토비의 스프링 3.1] 저자 순수 JDBC - 등록 - 초기에는 복잡한 JDBC API와 SQL을 한 땀 한 땀 직접 작성했어야 했다. - 개발성 측면에서 매우 뒤떨어지는 방법이다. JdbcTemplate - JdbcTemplate과 같은 SQL Mapper가 등장..
전체 글
이 글은 김영한 님의 Infrean 강의를 학습한 내용을 정리하여 작성합니다. 스프링 JdbcTemplate 순수 Jdbc와 동일한 환경설정을 하면 된다. 스프링 JdbcTemplate과 MyBatis 같은 라이브러리는 JDBC API에서 본 반복 코드를 대부분 제거해준다. 하지만 SQL은 직접 작성해야 한다. 스프링 JdbcTemplate 회원 리포지토리 MemberRepository interface를 확장해 JdbcTemplateMemberRepository 클래스를 구현한다. JdbcTemplate을 사용하기 위해서는 위 코드처럼 클래스 내부에 JdbcTemplate을 선언해준다. 이때, JdbcTemplate은 이전 다른 코드들처럼 스프링으로부터 주입(Injection) 받을 수 없다. 따라서,..
이 글은 김영한 님의 Infrean 강의를 학습한 내용을 정리하여 작성합니다. 스프링 데이터 엑세스 H2 데이터베이스 설치 순수 Jdbc 스프링 JdbcTemplate JPA 스프링 데이터 JPA H2 데이터베이스 설치 개발이나 테스트 용도로 가볍고 편리한 DB, 웹 화면 제공 H2를 다운받고 실행시키면 최초의 데이터베이스 파일을 생성해야 한다. 데이터베이스 생성 방법 Jdbc:h2:~/test(최초 한번) ~/test.mv.db 파일 생성 확인 이후부터는 jdbc:h2:tcp://localhost/~/test 이렇게 접속 테이블 생성하기 테이블 관리를 위해 프로젝트 루트에 sql/ddl.sql 파일을 생성 위 내용을 실행하면 다음과 같이 MEMBER가 생성된다. 생성된 이후로는 다음과 같은 명령을 통해..
이 글은 김영한 님의 Infrean 강의를 학습한 내용을 정리하여 작성합니다. 회원 웹 기능 - 홈 화면 추가 회원 웹 기능 - 등록 회원 웹 기능 - 조회 회원 웹 기능 - 홈 화면 추가 홈 컨트롤러 추가 회원 관리용 홈 실행 결과 참고: 컨트롤러가 정적 파일보다 우선순위가 높다. 현재 이전에 생성한 index.html 정적 파일을 이미 존재하는 상태다. 그럼에도 불구하고 방금 생성한 home.html 결과 페이지가 출력되었다. 이러한 이유는 간단하다. 우리가 입력한 url을 내장 톰켓 서버가 확인한다. 그러면 톰켓 서버는 우선 스프링 컨테이너 내에 해당 url과 관련된 컨트롤러를 탐색한다. 만약 관련 컨트롤러가 존재하지 않는다면 resources/static 폴더 아래에 정적 파일을 탐색해준다. 회원..
이 글은 김영한 님의 Infrean 강의를 학습한 내용을 정리하여 작성합니다. 컴포넌트 스캔과 자동 의존관계 설정 자바 코드로 직접 스프링 빈 등록하기 컴포넌트 스캔과 의존관계 설정 회원 컨트롤러가 회원서비스와 회원 리포지토리를 사용할 수 있게 의존관계를 준비한다. 회원 컨트롤러에 의존관계 추가 @Controller 스프링 컨테이너에 해당 클래스 객체를 생성해 넣어둔다. 해당 객체는 스프링이 관리한다. 이를 스프링 컨테이너에서 스프링 빈이 관리된다고 표현한다. 위 이미지처럼 MemberService 객체를 new로 생성해 사용할 수 있다. 하지만, 여러 Controller들이 MemberService를 사용하게 될 것인데 굳이 여러 개의 인스턴스를 생성할 필요가 없다. 하나의 인스턴스를 공유해야 한다. ..
이 글은 김영한 님의 Infrean 강의를 학습한 내용을 정리하여 작성합니다. 비지니스 요구사항 정리 회원 도메인과 리포지토리 만들기 회원 리포지토리 테스트 케이스 작성 회원 서비스 개발 회원 서비스 테스트 비지니스 요구사항 정리 데이터: 회원ID, 이름 기능: 회원 등록, 조회 아직 데이터 저장소가 선정되지 않음(가상의 시나리오) 일반적인 웹 애플리케이션 계층 구조 컨트롤러: 웹 MVC 컨트롤러 역할 서비스: 핵심 비지니스 로직 구현 리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인: 비지니스 도메인 객체, ex) 회원 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨 클래스 의존관계 아직 데이터 저장소가 선정되지 않아서, 우선 인터페이스로 구현 클래스를 변경할 수 있도록..
이 글은 김영한 님의 Infrean 강의를 학습한 내용을 정리하여 작성합니다. 이제부터는 스프링 웹 개발 기초에 대해 알아본다. 웹 개발에는 크게 세 가지 방법이 존재한다. 정적 컨텐츠 MVC와 템플릿 엔진 API 정적 컨텐츠 정적 컨텐츠란 이전 우리가 간단한 예제로 Welcome Page를 만들어 본 것을 떠올리면 된다. 정적 웹 페이지(static web page), 플랫 페이지(flat page, 스테이셔너리 페이지(stationary page)는 저장된 그대로 사용자에게 전달되는 웹 페이지로서, [1] 이는 웹 애플리케이션에 의해 생성되는 동적 웹 페이지와 반대되는 용어이다. [2] 즉, 정적 웹 페이지는 모든 상황에서 모든 사용자에게 동일한 정보를 표시하며, 콘텐츠 타입이나 문서 언어의 협상(n..
이 글은 김영한 님의 Infrean 강의를 학습한 내용을 정리하여 작성합니다. 빌드하고 실행하기 빌드를 수행하고 실제 실행할 수 있는 파일을 생성해본다. 이때, 콘솔 창을 이용한다. 1. ./gradlew build 2. cd build/libs gradlew build 명령의 결과로 hello-spring-0.0.1-SNAPSHOT.jar 파일이 생성되었다. 이 파일을 실행시키려면 다음 명령어를 사용한다. 3. java -jar hello-spring-0.0.1-SNAPSHOT.jar hello-spring-0.0.1-SNAPSHOT.jar 파일을 java를 사용해 실행시켰다. 제대로 동작하는지 확인해보자. 보다시피 localhost:8080/hello 페이지가 정상적으로 동작하는 것을 확인할 수 있다..