본문 바로가기

전체 글315

[카카오테크캠퍼스] 1주차 과제 코드리뷰 정리 1주차 과제 코드리뷰를 받았다. 사실 스프링으로 스스로 무언가를 구현하는 것이 처음이라 정말 어려웠고, 수업때 배운 내용을 최대한 활용해서 구현해보려고 노력했다. 그래도 과제 다 못할수도 있다고 생각했었는데 어찌저찌 하니까 되어서 다행이다. 멋사 때 코드리뷰를 받아본 적이 있는데 그 때 실력이 많이 느는 것이 느껴졌었다. 카테캠에서는 깃허브 뿐만 아니라 실시간 줌으로 피드백 해주는 과정도 제공하기 때문에 앞으로 6주동안 얼마나 성장할 수 있을지 기대가 된다. 내가 여쭤봤던 부분Q.코드를 짜다 보니 메서드가 뒤죽박죽인 것 같은데 어떤 순서로 정리하는 것이 좋을까요A.https://github.com/JunHoPark93/google-java-styleguide GitHub - JunHoPark93/goog.. 2024. 6. 30.
[카카오테크캠퍼스] 데이터베이스 적용, JDBC 이제까지는 데이터베이스가 따로 없어서 해시맵에 저장해 두었었는데, 앱이 실용적으로 수행되려면 시스템을 껐다 켜도 데이터가 그대로여야한다.  데이터베이스는 데이터를 관리하기 위한 별도의 공간이고, 데이터베이스를 관리하고, 운영하는 소프트웨어를 DBMS라고 한다. DBMS에는 MySQL, 오라클 등이 있다. JDBC JDBC는 데이터베이스에 접속할 수 있도록 도와주는 자바 API이다.DBMS마다 접근 로직이 다르다. JDBC는 접근로직을 구현체로부터 분리하여 디비에 따라 코드 수정을 할 필요가 없도록 만들어준다. JDBC 구현하는 법 1. 의존성 주입implementation 'org.springframework.boot:spring-boot-starter-jdbc'runtimeOnly 'com.h2data.. 2024. 6. 30.
[카카오테크캠퍼스] Thymeleaf 과제 step2에서 Thymeleaf로 관리자페이지를 만들라는 과제가 나왔다. 나는 Thymeleaf를 다뤄본 적이 전혀 없기 때문에 이거부터 공부해야겠다. 타임리프는 스프링부트에서 공식적으로 지원하는 View 템플릿이다. JSP와는 달리 타임리프 문서는 html확장자를 가지고 있어서 JSP처럼 서블렛이 문서를 표현하는 방식이 아니기 때문에 서버 없이도 동작이 가능하다. th:text : 문자열 생성 -> th:text="${data}"th:each : 반복문 -> th:each="article:${alticleList}"th:if : 조건문 -> th:if=${data != null}th:herf : 이동경로 -> th:herf="@{/article/list(id=${data})}" 태그는 링크를 받아.. 2024. 6. 27.
[카카오테크캠퍼스] 스프링이란, 의존성, http로 정보 주고받기 라이브러리와 프레임워크라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어한다. 작동 중에 기능이 필요할 때만 능동적으로 사용한다.프레임워크는 개발자가 만든 클래스에 대한 제어 권한을 넘겨받아서 주도적으로 애플리케이션의 흐름을 제어한다. 개발자가 만든 클래스의 오브젝트를 생성하고 실행하는 일은 프레임워크에 의해 진행된다 스프링은 객체지향적인 코드를 짜게 해준다. 의존성일반적으로 애플리케이션에서 요구하는 다양한 기능들은 여러개의 의존성을 필요로한다.의존성을 주입하는 방법은 build.gradle에서   testImplementation platform('org.junit:junit-bom:5.9.1')Junit BOM (Bill of Materials): JUnit 테스트 라이브러리의 다.. 2024. 6. 25.
[멋쟁이 사자처럼] level10 구현 이번엔 level 10만 구현하면 되지만 양이 엄청 많다.. Member package backend.likelion.todos.member;import java.util.Optional;import org.springframework.stereotype.Repository;@Repositorypublic interface MemberRepository { // TODO [10단계] JpaRepository를 상속받습니다. // TODO [10단계] 아래는 기존 코드입니다. 컴파일 오류가 발생하고 있는데, 이를 해결하세요. Optional findByUsername(String username);} JpaRepository를 상속받는다. 이 때 제네릭타입을 명시해주어야한다.또한 인터페이스.. 2024. 5. 20.
[멋쟁이 사자처럼] level7~9 구현 오랜만에 클론코딩 과제가 나왔다... level7 은 모두 구현이 되어있었다! level8 GoalService public Long save(String name, String color, Long memberId) { // TODO [8단계] memberId로 회원을 조회하고, 조회에 실패하면 "회원 정보가 없습니다." 예외를 발생시키세요. Member member = memberRepository.findById(memberId) .orElseThrow(() ->new NoFoundException("회원정보가 없습니다.")); // TODO [8단계] 조회된 회원 정보를 사용하여 새 Goal 객체를 생성하세요. Goal .. 2024. 4. 30.