블로그
전체 3#카테고리
- 백엔드
#태그
- 워밍업클럽
![[인프런 워밍업 클럽 1기 BE] 세 번째 발자국](https://cdn.inflearn.com/public/files/blogs/85e8cc75-0d61-492e-a124-d62e00f76813/인프렁 워밍업 클럽 BE.png?w=260)
2024. 05. 19.
0
[인프런 워밍업 클럽 1기 BE] 세 번째 발자국
[강의 내용 요약]Section6. 배포 준비배포란?최종 사용자에게 SW를 전달하는 과정profile같은 서버 코드를 실행시키나, 실행 설정을 다르게 하고 싶을 때 하는 설정application.yml에서 --- 로 옵션 구분active profiles : 서버 실행 시, 어떤 profile로 실행시킬 지 설정하는 부분git, githubgit버전 관리 프로그램githubgit으로 관리되는 프로젝트의 코드가 저장되는 저장소github 사용 이유백업용배포 시 활용 가능Section7. AWS 배포EC2 접속다운로드 받은 키 페어(pem 키) 이용키 페어 접근 권한 변경 (400)ssh 접속서버 설정 및 배포 과정Git, Java, MySQL 설치→ MySQL DB, Table 생성→ git cloneSwap 설정빌드 및 실행방화벽 설정백그라운드 실행 설정DNS 적용[과제 정리][과제 6] API 분리[과제 7] JPA[회고]배포 환경을 Ubuntu로 셋팅했는데, DB 셋팅이 잘되지 않아서 생각보다 많은 시간을 소요했다. 배포를 진행하며 Linux 공부의 필요성도 느꼈다. 라이브 Q&A에서 멘토님께서 해주신 코드 리뷰를 보며 코드를 작성할 때 많은 생각과 고민이 필요하다는 것을 다시 한번 느꼈다. 그동안 배운 내용들을 최대한 활용해서 마지막 미니 프로젝트까지 잘 마무리해야겠다!
백엔드
・
워밍업클럽
![[인프런 워밍업 클럽 1기 BE] 두 번째 발자국](https://cdn.inflearn.com/public/files/blogs/45dcd20f-135c-41c1-b495-f7016e55e8bd/인프렁 워밍업 클럽 BE.png?w=260)
2024. 05. 12.
0
[인프런 워밍업 클럽 1기 BE] 두 번째 발자국
[강의 내용 정리]Section3. 스프링 컨테이너와 스프링 빈스프링 빈서버 실행 → 서버 내부에 컨테이너가 만들어짐 → 컨테이너에 클래스가 들어감컨테이너의 역할 : 서로 필요한 관계에 있는 스프링 빈끼리 연결시킴스프링 컨테이너Service를 대신 인스턴스화 하고, 그 때 알아서 Repository를 결정하여 주입 : 제어의 역전어떤 Repository가 사용될 지는 Repository에서 결정 (사용할 것에 @Primary붙여주기)@Primary : 우선권을 결정하는 어노테이션Repository에서 인터페이스 구현@Configuration, @Bean, @Component, @Qualifier 등의 어노테이션을 통해 스프링 컨테이너 사용Section 4. JPA(Java Persistence API)SQL을 직접 작성하면 아쉬운 점SQL 문자열 작성에서 실수가 발생할 수 있으며, SQL 관련 오류가 컴파일 시점이 아닌 런타임 시점에 발견됨특정 데이터베이스에 종속적임반복 작업이 많아짐(CRUD를 모두 작성해야 함)데이터베이스의 테이블과 객체의 패러다임이 다름JPA객체와 관계형 DB의 테이블을 짝지어 데이터를 영구적으로 저장할 수 있도록 정해진 Java 진영의 규칙Spring Data JPA를 이용해 자동으로 쿼리 날리기Repository에서 JdbcTemplate를 사용하여 결과를 하나하나 매핑해 주는 방식이 아닌, 객체 간의 변환 진행트랜잭션쪼갤 수 없는 업무의 최소 단위 (모두 성공시키거나, 모두 실패시키거나)한 몸처럼 묶어서 저장스프링에서 트랜잭션 적용@Transactional (org.springframework.transaction.annotation)해당 함수가 실행될 때, start transaction;함수가 예외 없이 잘 끝나면, commit, 문제가 있다면 rollback역할변경 감지쓰기 지연1차 캐싱지연 로딩[과제 정리][과제 4] POST, PUT, GET API[과제 5] 클린 코드[회고]과제를 수행하며 더 가독성 있고 클린한 코드를 작성하기 위해 어떻게 하면 좋을지 고민했던 한 주였다. 다른 사람들이 작성한 코드도 살펴보면서 내 코드에서 부족한 점과 업그레이드할 점을 찾아보고 더 공부할 수 있었다. 과제 마감 후, 과제 수행 목적에 맞게 풀이했는지 확인하는 것도 많은 도움이 됐다.
백엔드
・
워밍업클럽
![[인프런 워밍업 클럽 1기 BE] 첫 번째 발자국](https://cdn.inflearn.com/public/files/blogs/988c3774-84e7-489d-a567-0b0dd5235083/인프렁 워밍업 클럽 BE.png?w=260)
2024. 05. 05.
0
[인프런 워밍업 클럽 1기 BE] 첫 번째 발자국
[강의 내용 정리]Section 1. API 만들기@RestController : 아래 클래스를 api의 진입 지점으로 설정GET(@GetMapping(”/path”))@RequestParam : 쿼리를 통해 넘어온 데이터를 파라미터로 줄 때 사용파라미터를 객체로 받을 수 있음(DTO) → 객체로 받으면 @RequestParam 안 씀DTO에 생성자, getter 생성Controller에서 getter가 있는 객체를 반환하면 json이 됨POST(@PostMapping(”/path”))Body로 데이터를 받을 때, JSON 사용@RequestBody : http body의 json을 파싱해서 객체(dto)로 만들 때 사용DTO에 getter 생성Section 2. Database 조작하기CRUD API를 만든다 == 어떤 대상에 대해 생성, 조회, 업데이트, 제거 API를 만든다JDBC와 연결private final JdbcTemplate jdbcTemplate; public UserController(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } jdbcTemplate.query(sql, RowMapper 구현 익명클래스)⇒ Lamda로 더 간결하게 변경 가능jdbcTemplate.update()⇒ 여기서 update : sql의 UPDATE와 달리, 내용이 수정될 때 사용(INSERT, UPDATE, DELETE)Section 3. 역할의 분리와 스프링 컨테이너Controller 3단 분리(Layered Architecture)Controller : API의 진입 지점. 즉, HTTP 관련 부분 처리(”path”) (HTTP Body를 객체로 변환)Service : 예외 처리 (유저가 있는지 없는지 확인)Repository : DB와의 통신 (SQL)[과제 정리][과제 1] 어노테이션[과제 2] GET, POST API[과제 3] 람다식[회고]스터디 참가 전, 강의를 모두 수강하긴 했지만 내 지식으로 만들지 못한 부분이 많았다. 강의를 다시 수강하며 부족한 부분을 채우고자 스터디에 참여하게 되었다.일정표에 따라 강의를 재수강하고 과제를 수행하면서 내가 부족한 부분이 어느 부분인지 확실하게 알 수 있었다. 특히, 자바에 대한 학습이 더 많이 필요함을 느꼈다.2주차에는 강의 수강과 과제 수행을 좀 더 성실히 수행하고자 한다!
백엔드
・
워밍업클럽




