Spring/Spring boot 입문

6. AOP 더보기 1. AOP가 필요한 상황 2. AOP 적용 1) AOP가 필요한 상황 AOP의 본격적인 이해에 앞서, 상황을 예로들어 어떤 경우에 AOP가 사용 되는지 알아보자! • 어떤 경우에 AOP를 사용하나? 모든 메서드의 호출 시간 측정 공통 관심 사항 (cross-cutting concern) vs. 핵심 관심 사항 (core concern) 회원 가입 시간, 회원 조회 시간 측정 • 회원 조회(findMembers), 가입(join) 시간 측정 추가 ( in MemberService) public Long join(Member member){ // 중복된 이름을 가진 회원은 가입 불가능 조건 long start = System.currentTimeMillis(); //로직 시작 시간 찍기..
5. 스프링 DB 접근 기술 6) 스프링 데이터 JPA 스프링 데이터 JPA: JPA의 업그레이드 버전 프레임워크. JPA 편리하게 사용하기 위한 도구에 가까움 (Repository에 구현 Class 없이 인터페이스만으로 개발 가능!) 스프링 데이터 JPA Repository에 구현 클래스 작성해줄 필요 X, 인터페이스만 있으면 된다 기본 CRUD (생성, 읽기, 갱신, 삭제) 기능도 얘가 제공해줌 단순 반복 코드 삭제 → 핵심 비즈니스 "로직" 개발에 집중 가능, 생산성 증가 어쨌든 근본은 JPA에 두고 있음 (just JPA를 편리하게 사용하기 위한 도구임) 0. 설정은 JPA와 동일하게 유지 - build.gradle / application.properties / Entity Mapping 은 동..
5. 스프링 DB 접근 기술 5) JPA JPA: 기존 반복 코드 + 기본 SQL 대신 자동으로 처리 해줌 JPA 사용 이유 JdbcTemplate 의 업그레이드 버전 ∴ 작성 코드 더 간단해짐 (직접 작성하던 SQL 상당 부분 대체) SQL, 데이터 중심 설계 → 객체 중심 설계로 전환 가능 (객체만 신경쓰기 가능) 개발 생산성 증대 (객체를 JPA에 넣으면, 중간에서 DB에 SQL날리고 Data 가져오는 것들을 JPA가 다 처리해줌) 1. 설정 추가/ 수정 1) build.gradle에 dependency 추가/수정 // implementation 'org.springframework.boot:spring-boot-starter-jdbc' implementation 'org.springframewor..
5. 스프링 DB 접근 기술 4) 스프링 JdbcTemplate JdbcTemplate : 가장 많이 사용하는 JDBC 데이터베이스 접근 방식. 가장 낮은 수준의 접근이며 JDBC 코어 패키지의 중심 Class임. SQL 쿼리들을 작성하면 실행해준다. 순수 JDBC와 동일한 환경설정을 해줌 >> build.gradle에서 spring-boot-starter-jdbc 유지 JDBC API에서의 반복 코드 Almost 제거 해줌. 실무에서 사용 多 SQL문은 직접 작성할 것. 1. JdbcTemplateMemberRepository 생성 (implements MemberRepository) 1) 사용하기 전 JdbcTemplate를 먼저 선언. private final JdbcTemplate jdbcTemp..
5. 스프링 DB 접근 기술 더보기 1. H2 데이터베이스 설치 2. 순수 Jdbc 3. 스프링 통합 테스트 4. 스프링 JdbcTemplate 5. JPA 6. 스프링 데이터 JPA [목표] ➤ 데이터를 영구적으로 보존하기 위해선 단순 메모리 저장은 무리가 있다. 본격적으로 DB를 설치해 저장해보며 데이터를 지켜보자! 1) H2 데이터베이스 설치 H2: 개발이나 테스트 용도의 가벼운 DB, 웹화면 제공 H2 파일을 설치 후 (아예 spring-study 폴더 안에 저장함) cmd 창을 통해 h2.bat을 bin에서 실행 시켜주면, 위와 같은 화면이 뜬다. 최초에는 데이터베이스 파일을 생성해줘야 한다. 설정을 그대로 둔 채 연결하면, 이런 화면이 뜬다. 이때 데이터 베이스가 잘 생성됐는지 확인 하려면 홈..
인프런에서 스프링 입문 강좌를 수강하며 실습하던 중, H2를 스프링과 연결하는 과정에서 발생한 오류이다.분명히 강좌에서 나온대로 따라 했는데 오류가 났고...(ㅠㅠ) 구글링을 해도 마땅한 해결 방법이 나오지 않아 더더욱 당황스러웠던 것 같다.혹시 나와 같은 문제를 겪는 사람이 있다면 도움이 될까해서 작성한다.문제 배경강의 중 순수 JDBC 챕터를 듣던 과정에서 발생한 문제이다.H2 DB를 스프링과 연결해 주기 위해 build.gradle, application.properties, SpringConfig 파일을 수정해주었고, JdbcMemberRepository를 MemberRepository의 구현체로 추가해주었다. cmd 창을 통해 h2.bat을 실행 시켰고, 이걸 통해 뜬 h2 웹 브라우저는 정상적..
4. 회원 관리 예제 - 웹 MVC 개발 [목표] ➤ 회원 관리를 위한 맴버 컨트롤러, 의존관계를 만들었으니 이것을 이용해서 회원을 등록하고, 조회 가능한 매개인 웹 MVC를 만들어보자! 1) 회원 웹 기능 - 홈 화면 추가 회원을 등록하고 조회할 수 있는 버튼이 있는 홈 화면을 만들어보자. 1. controller 폴더 > HomeController 추가 (home 화면 담당할 controller) @Controller는 저번 시간에 배웠던 것을 복기해보자. XXXController는 @Controller annotation을 추가해줌으로써, 스프링 빈으로 자동 등록되어 외부 요청을 받는 역할을 수행한다. "/" : 단순 슬래쉬가 의미하는 것은 localhost8080으로 접속하자마자 뜨는 화면, 즉 ..
3. 스프링 빈과 의존관계 1) 컴포넌트 스캔과 자동 의존관계 설정 . 회원에게 가시적인 서비스를 제공하기 위해서는 view template 와 controller (member controller)가 필요하다. member controller = memberService를 통해 회원 가입, 데이터 조회해야 함 → "의존관계가 있다." member controller가 MemberService를 의존한다. member controller가 memberService와 memberRepository를 사용 가능하게 의존관계를 준비한다. 1. MemberController 만들기 - 컴포넌트 스캔과 자동 의존관계 설정 - controller/... 에 MemberController 클래스 생성 → @Contr..
4. 회원 관리 예제 - 백엔드 개발 4) 회원 서비스 개발 회원 서비스 클래스 생성 회원 서비스: 회원 리포지토리 + 도메인 활용해 비즈니스 로직을 작성하는 부분 (Repository에 비해) 서비스 클래스는 비즈니스에 가깝게 네이밍 해야 함 (∵ 비즈니스 처리하므로) Service 패키지 생성 > MemberService 클래스 생성해 작업 1. MemberRepository 객체 생성 - final : 여러 context에서 단 한번만 할당 될 수 있는 entity를 정의할 때 사용 ➔ 객체 변수 final : 해당 변수에 다른 참조 값 지정 불가능 (재변경 불가능, 다른 객체로 변경 불가능) (✔ 객체의 속성(=필드)는 변경 가능) 2. 메서드 정의 - (1)회원 가입 메서드 (join) 정의 -..
Stream이란? 배경 Array (혹은 Collection)의 elements들을 이용해야 하는 경우 기존에는 for/ foreach문을 통해 반복적으로 Array(or Collection)안 요소들을 하나씩 꺼내서 다뤄야 했음. 시간 복잡도 증가, 루프 여러번 돌 가능성 존재함 ♘Collection - 데이터의 집합, 그룹 - List, Set, Queue 크게 3가지 상위 인터페이스로 분리 가능 Ⅰ) Set [구현 클래스: HashSet, TreeSet] - 순서 없는 데이터의 집합 (중복 비허용 - 수학적 집합) Ⅱ ) List [LinkedList, Vector, ArrayList] - 순서 있는 데이터 집합 (중복 허용) Ⅲ ) Queue [LinkedQueue, PriorityQueue] -..
4. 회원 관리 예제 - 백엔드 개발 1) 비즈니스 요구사항 정리 비즈니스 요구사항 정리 데이터 : 회원 ID, 이름 기능 : 회원 등록, 조회 아직 DB가 선정되지 않았음을 가정하고 개발 일반적인 웹 애플리케이션 계층 구조 컨트롤러: 웹 MVC의 컨트롤러 역할, API 생성 시 컨트롤러 역할 서비스 : 서비스 클래스의 핵심 비즈니스 로직이 들어가 있음 (ex. 회원 가입 중복 불가) 도메인 : DB에 주로 저장되고 관리되는 (ex. 회원, 주문, 쿠폰 ...) 비즈니스 도메인 객체 리포지토리 : DB에 접근, 도메인 객체를 DB에 저장하고 관리 비즈니스 도메인 객체를 가지고 핵심 비즈니스 로직이 돌아가도록 구현한 계층 클래스 의존관계 아직 DB가 선정되지 않음 → 인터페이스로 설계 (회원 리포지토리에)..
3. API 정의 안드로이드, ios 개발 시 서버는 json [= data format] 으로 고객에게 전달하는 방식 + 서버끼리 통신할 때도 사용 정적 컨텐츠 제외) 방식 2가지 : html로 vs 데이터 바로 1. MVC 방식 → View를 찾은 뒤, template engine으로 화면 랜더링 → html을 웹브라우저에 넘겨주는 방법 2. API 방식 → 데이터 바로 내림 API와 MVC 방식의 차이 API는 별도의 View 생성 없이 http로 문자가 그대로 넘어간다 HelloController에 helloString 생성 (전달 값이 문자일 경우) 마찬가지로 @GetMapping으로 url과 매칭시켜주고, @RequestParam으로 입력값을 받아온다 차이점은 @ResponseBody가 추가 ..
mopipi
'Spring/Spring boot 입문' 카테고리의 글 목록