Spring

·Spring
더보기 참고자료 https://ict-nroo.tistory.com/130 https://jojoldu.tistory.com/415 🔸 EntityManager 매 요청마다 (=스레드 하나 생성마다) Entity Manager 생성 (by EntityManagerFactory) 이 EntityManager은 내부적으로 DB 커넥션 풀을 이용해 DB에 접근함 📌 영속성 컨텍스트 엔티티를 영구 저장하는 환경 EntityManager.persist(entity); 원래 persist(object) → DB에 object data 저장하는 것 But 실제로는 DB 저장X, 영속성 컨텍스트에 저장 → DB 저장 순서를 거친다 언제 DB 저장? Transactional 해당 스레드가 끝나고 commit일 때! 영속..
🔖배경, 이론 관계형 데이터 베이스의 중요성 대두 객체를 관계형 데이터 베이스에서 관리하는 것 중요’ SQL 통해서만 DB 접근 가능 ∴ 각 테이블마다 CRUD SQL 매번 생성해줘야 함 ⇒ 어플리케이션 코드 >>>>>> createDate =" + posts.getCreatedDate() + ", modifiedDate =" + posts.getLastModifiedDate()); //날짜 정상적으로 나오면 패스 assertThat(posts.getCreatedDate()).isAfter(now); assertThat(posts.getLastModifiedDate()).isAfter(now); } 어노테이션 @MappedSuperclass 엔티티 클래스들이 BaseTimeEntity을 상속할 경우 필드..
·Spring
❗DI 주입 구현 개념적 분류 2가지 Setter Based Injection (수정자를 통한 주입) Controller 클래스의 특정 메소드가 Service(인터페이스) 객체에 의존하는 경우→ Service 구현체를 메소드에 넘겨줘야 함 (=DI) Service 구현체 ⇒ setService()라는 setter을 정의해 Controller 클래스에 주입→ 필요로하는 메소드에서 그 구현체를 사용 가능. 이때 NullPointException이 발생할 수 있음 (∵ Service 구현체 주입해주지 않아도 Controller 객체 생성 가능) 🤔 ... Service 구현체가 주입 되지 않으면 아예 객체 생성 자체를 방지할 순 없을까? Constructor based Injection (생성자를 통한 주입)..
Rest API Controller 생성 및 단위 테스트 [목표] ➤ 테스트 코드 작성 / 단위 테스트 실행 TDD ? Unit Test? TDD : Test-Driven-Development 테스트 코드 먼저 작성하면서 시작 (Red - Green - Refactor) Unit Test : 기능단위의 테스트 코드 작성 (TDD의 첫번째 단계) 순수한 테스트 코드 작성 행위 단위 테스트는 문제 발견이나, 추후 리팩토링 같은 수정사항 발생 시 기존 기능 올바르게 작동하는지 확인 도움 중간중간 체크함으로써 불확실성 줄여준다. (+ 시스템에 대한 문서로 사용 가능) 매번 일일히 tomcat 올려서 출력 체크하는 것도 일이니까... 결과만 도출되는 단위테스트 이용하면 빠름 프레임워크 : xUnit - 테스트 코..
[사용 교재] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 먼저 프로젝트 생성 후 clone해온 내 깃헙 레퍼지토리와 동기화 하기 이미 깃헙 레퍼지토리와 연동된 로컬 저장소를 생성하고, 거기에 프로젝트를 만든거여서 간단하게 인텔리제이 메뉴 자체에 있는 add, commit, push를 이용해 레퍼지토리에 올려줬다. commit 메시지를 적는것에 일종의 규칙이 암묵적으로 존재한다. 아무래도 협업이 필수 불가결하므로 교통 정리를 위해 정말 중요할 것 같다. https://xtring-dev.tistory.com/entry/Git-%EA%B7%9C%EC%B9%99%EC%A0%81%EC%9D%B8-Commit-%EB%A9%94%EC%84%B8%EC%A7%80%EB%A1%9C-%EA%B0%9C%EB%B0%9C..
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으로 접속하자마자 뜨는 화면, 즉 ..
mopipi
'Spring' 카테고리의 글 목록