SPRING 입문 [ 코드로 배우는 스프링 부트 ] 25

[스프링 입문] 섹션 7 AOP (+ 강의를 마치며)

7.1 AOP 가 필요한 상황 예를 들어, 모든 메소드의 호출 시간을 측정해야 한다고 가정하자. 시간 측정을 위해서는 memberConrtoller, memberService, memberRepository 에 시간 측정 로직을 전부 작성하여야 할 것이다. 실제 MemberService 에 회원 조회 시간을 측정하는 코드를 작성해보자. try { } finally { } 문을 통해, ( 종료시간 - 시작 시간 ) 으로 시간을 측정하도록 한다. @Transactional public class MemberService { private final MemberRepository memberRepository; public MemberService(MemberRepository memberRepository)..

[스프링 입문] 섹션 6.6 스프링 DB 접근 기술 (스프링 데이터 JPA)

6.6.1 스프링 데이터 JPA 란? 앞서 스프링 부트와 JPA 를 통해 개발 코드가 단순화되고, 개발 생산성이 증가하는 것을 볼 수 있었다. 여기에 더해 스프링 데이터 JPA를 사용하면, repository 에 구현 클래스 없이 interface 만으로도, 개발이 완료된다. 또한, 스프링 데이터 JPA 는 기본 CRUD 기능도 제공한다. 즉, 스프링 데이터 JPA를 사용하면, 단순하고 반복적인 코드를 거의 작성하지 않으므로, 핵심 비즈니스 로직을 개발하는데 집중할 수 있다. 이러한 스프링 데이터 JPA는 실무에서 선택이 아닌 필수이다. (단, JPA 를 먼저 학습하고 스프링 데이터 JPA 를 학습하여야 한다.) 6.6.2 스프링 데이터 JPA 코드 작성 - Repository 스프링 데이터 JPA 의 ..

[스프링 입문] 섹션 6.5 스프링 DB 접근 기술 (JPA)

6.5.1 JPA 란? 앞선 섹션 6.4의 JdbcTemplate 예제에서, 중복 코드는 제거할 수 있었지만, 여전히 SQL 은 개발자가 작성해야했다. JPA는 기존의 반복 코드 뿐만 아니라, 기본적인 SQL도 직접 만들어서 실행해준다! 또한, SQL과 데이터 중심의 설계에서, 객체 중심의 설계로 패러다임을 전환한다. 따라서 JPA 를 사용하여 개발하면, 개발 생산성을 크게 향상시킬 수 있다. 6.5.2 JPA 코드 작성 - 라이브러리 JPA 를 이용하여 DB에 접근하는 코드를 작성해보자. 먼저, build.gradle 파일의 dependencies 에 아래의 코드를 추가하고, 라이브러리를 받아준다. implementation 'org.springframework.boot:spring-boot-start..

[스프링 입문] 섹션 6.4 스프링 DB 접근 기술 (스프링 통합 Jdbc Template)

6.4.1 스프링 Jdbc Template 코드 작성 앞선 섹션 6.2의 예제에서, 대부분의 코드들이 중복으로 작성되었다. 스프링 JdbcTemplate, MyBatis 같은 라이브러리는 JDBC API 에서의 중복 코드를 제거해준다. 따라서 순수 Jdbc 보다 훨씬 간결하게 코드를 작성할 수 있다는 장점이 있다. (단, sql 은 직접 작성해야 한다.) JdbcTemplate 코드를 작성해보자. 먼저, Jdbc Template 환경 설정의 경우, 섹션 6.3의 순수 Jdbc 설정과 동일하다. buile.gradle 파일의 dependencies 에 아래의 코드를 추가로 작성한다. implementation 'org.springframework.boot:spring-boot-starter-jdbc' ru..

[스프링 입문] 섹션 6.3 스프링 DB 접근 기술 (스프링 통합 테스트)

6.3.1 스프링 통합 테스트 코드 작성 앞서 섹션 3.5에서 진행한 회원 서비스 테스트의 경우, 스프링과는 관련 없이, 순수한 자바 코드만을 테스트하였다. 하지만 섹션 6.2에서 JDBC repository 로 DB까지 연결하는 코드를 테스트 하기 위해서는, 스프링 컨테이너와 DB를 연결한 통합 테스트를 진행해야 한다. ( Database Connection 정보들을 스프링 부트가 가지고 있기 때문) 먼저, test > java > hello.hellospring > service 폴더에 MemberServiceIntegrationTest 파일을 만들고 다음과 같이 코드 작성한다. 아래의 코드는 상단 일부만을 나타내었다. @SpringBootTest @Transactional class MemberSe..

[스프링 입문] 섹션 6.2 스프링 DB 접근 기술 (순수 JDBC)

6.2.1 순수 JDBC - 드라이버 세팅 앞서 섹션 5에서 DB를 메모리에 저장하면, 서버를 내렸을 때 정보가 모두 손실되는 문제가 있었다. 따라서, 어플리케이션에서 DB 를 연동하여, 회원 정보가 데이터베이스에 저장되도록 하고자 한다. 그중에서 첫 번째로, 고전적인 방식인 순수 JDBC 기술을 살펴보자. 먼저, build.gradle 파일에 Jdbc 와 H2 데이터 베이스 관련 라이브러리를 추가해야 한다. 다음 코드를 dependencies 안에 추가로 작성해준다. implementation 'org.springgramework.boot:spring-boot-starter-jdbc' runtimeOnly 'com.h2database:h2' - Jdbc : Java는 db와 연동하려면 기본적으로 jdb..

[스프링 입문] 섹션 6.1 스프링 DB 접근 기술 (H2 데이터베이스 설치)

6.1.0 스프링 DB 접근 기술 섹션 5에서는, 회원가입 정보를 메모리에 저장하였다. 하지만 메모리 저장시, 서버를 내렸다가 다시 켜면 데이터가 모두 지워진다는 문제점이 있다. 따라서, 실무에서는 데이터 베이스에 정보를 저장하고 관리한다. 섹션 6에서는 이러한 스프링 DB 접근 기술을 공부하고자 한다. 섹션6 DB 접근 기술 공부 목차 1) H2 데이터베이스 : 가볍고 심플한 데이터베이스 2) 순수 JDBC : sql 을 사용하여 db 와 서버를 연결 3) 스프링 Jdbc Template : 스프링이 중복을 제거하여, 템플릿 제공 어플리케이션에서 db 를 보다 쉽게 넘길 수 있음 4) JPA : sql 조차 개발자가 직접 작성하지 않고, 등록/수정/삭제를 모두 관리해줌 5) 스프링 데이터 JPA : j..

[스프링 입문] 섹션 5.3 웹 MVC 개발 (회원 웹 기능 - 조회)

5.3.1 회원 웹 기능 - 등록 화면 작성 앞선 MemberController 에 다음과 같은 코드를 추가로 작성한다. @GetMapping("/members") public String list(Model model){ List members = memberService.findMembers(); model.addAttribute("members", members); return "members/memberList"; } @GetMapping("/members") - http://localhost:8080/members 로 url에 직접 작성하면 get 방식으로 mapping List members = memberService.findMembers() - findMembers() 를 사용하여, 멤버를..

[스프링 입문] 섹션 5.2 웹 MVC 개발 (회원 웹 기능 - 등록)

5.2.1 회원 웹 기능 - 등록 화면 작성 앞선 MemberController 에 다음과 같은 코드를 추가로 작성한다. @GetMapping("/members/new") public String createForm(){ return "members/createMemberForm"; } @GetMapping("/members/new") - http://localhost:8080/members/new 로 url에 직접 작성하면 get 방식으로 mapping return "members/createMemberForm" - createMemberForm.html 로 이동 나중에 작성할 createMemberForm.html 에서 post 방식으로 값을 넘겨받기 위해, PostMapping 할 수 있는 메소드를..

[스프링 입문] 섹션 5.1 웹 MVC 개발 (회원 웹 기능 - 홈 화면 추가)

5.1.1 회원 웹 기능 - 홈 화면 추가 앞서 섹션 3 에서 백엔드 개발한 회원 관리 예제를, 웹 MVC 로 개발해보고자 한다. 먼저, 홈 화면을 만든다. 홈 화면은 http://localhost:8080/ 에 접속했을 때 호출되는 첫 화면이다. 홈 화면에는 회원을 등록하고, 조회할 수 있는 버튼이 있다. src > main > java > hello.hellospring > controller 패키지에 HomeController 클래스를 만들고, 다음과 같이 코드를 작성한다. package hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.ann..