본문 바로가기

분류 전체보기322

Controller를 3단 분리하기 -Service와 Repository 왜 코드를 깔끔하게 작성해야하는지에 대해 생각해 봤는데 여지껏 써왔던 Controller의 함수의 역할을 짚어보자 package com.group.libraryapp.controller.user; import com.group.libraryapp.dto.user.request.UserCreateRequest; import com.group.libraryapp.domain.user.User; import com.group.libraryapp.dto.user.request.UserUpdateRequest; import com.group.libraryapp.dto.user.response.UserResponse; import org.springframework.jdbc.core.JdbcTemplate; imp.. 2023. 6. 5.
Clean Code Clean Code(이하 클린코드)는 개발자에게 매우 중요한 개념이다. 클린 코드는 코드의 가독성과 유지보수성을 향상시키는 방법론이라고 할 수 있다. 이는 코드를 더 이해하기 쉽게 만들어 다른 개발자들과의 협업을 원활하게 하고, 코드의 변경과 수정을 더욱 효율적으로 할 수 있게 도와준다. 클린코드를 작성하는 가장 중요한 이유는 가독성이다. 코드를 작성할 때, 개발자는 코드를 작성하는 것뿐만 아니라 다른 개발자들이 코드를 이해하고 수정할 수 있도록 해야한다. 가독성이 떨어지는 코드는 이해하기 어렵고 오류가 발생할 가능성이 높다. 그렇기 때문에 클린코드를 작성하면 다른 개발자들도 빠르게 코드를 이해하고 필요한 수정을 쉽게 할 수 있다. 클린 코드의 특징 중 하나는 간결함이다. 코드를 간결하게 작성하면, 필요.. 2023. 6. 5.
좋은 코드(Clean Code)는 왜 중요한가? 좋은 코드(Clean Code)는 왜 중요하고 지금까지 만들어둔 UserController를 보다 좋은 코드로 리팩토링하는 것을 배워보겠다. 그리고 스프링 컨테이너와 스프링 빈이 무엇 어떠한 여러 방법으로 다루는지 인지? 스프링 컨테이너가 왜 필요한지, 좋은 코드와 어떻게 연관이 있는지 이해하는 시간을 가져보겠다. Clean Code는 왜 중요할까? 앞으로 많은 코드를 작성할 텐데 코드는 무엇일까? 코드는 요구사항을 표현하는 언어이다. 기술적 요구사항이건 비지니스적인 요구사항이건 어떠한 것을 동작, 기능하기 위해서 코딩을 하는데 개발자는 소프트웨어를 만들어가면서 요구되는 요구사항을 읽고 이해하고 그 요구사항을 구현하기 위해 코드를 작성한다. 이 때 읽는 것은 주어진 요구사항 말고 코드도 있는데 현업에서는.. 2023. 6. 5.
다시 한번 정리! 서버를 재시작하면 데이터가 없어지는 것을 MySQL라는 데이터베이스를 배워보면서 Spring Boot와의 연동으로 해결을 했는데 다음과 같은 것을 배울수 있었다. 디스크와 메모리 차이를 이해하고, Database의 필요성을 이해 SQL을 이용해 MySQL Database를 조작할줄암 스프링서버를 이용해 Database에 접근하고 데이터를 저장, 조회, 업데이트, 삭제할줄 알게 됨 API의 예외 상황을 알아보고 예외처리를 할줄 알게 됨 그.치.만! 전체적으로 보자면 한가지 클래스인 Controller에서 너무 많은 역할을 하고있다는 문제가 있다.(사실 배우는 중이라 이게 왜 문제인지는 모르겠다..) package com.group.libraryapp.controller.user; import com.gro.. 2023. 6. 4.
쓸데없는 궁금증 코드 자리바꿔보기 @PutMapping("/user") public void updateUser(@RequestBody UserUpdateRequest request){ String readSql = "SELECT * FROM user WHERE id = ?"; boolean isUserNotExist = jdbcTemplate.query(readSql, (rs,rowNum) -> 0, request.getId()).isEmpty(); if(isUserNotExist){ throw new IllegalArgumentException(); } String sql = "UPDATE user SET name = ? WHERE id = ?"; jdbcTemplate.update(sql, request.getName(), requ.. 2023. 6. 4.
유저 업데이트 API, 삭제 API 예외 처리하기 MySQL에 분명히 아무것도 없는데 수정 그리고 삭제가 200OK를 출력해주고 있다. 어떻게 해야지 200OK가 출력이 안되도록할까? API에서 예외를 던지도록 해보자. 간단하게 삭제할 error-test를 해보겠다. @GetMapping("/user/error-test") public void erroTest(){ throw new IllegalArgumentException(); } 서버를 재시각 해주고 POST MAN을 이용해 예외를 처리해보았다. 500Internal Server Error이 예외처리로 출력이 되었다. UpdateAPI와 DeleteAPI에서 데이터의 존재여부를 확인한 다음 예외를 던지고 예외가 없다면 500이아닌 200OK를 출력해보도록해서 예외처리를 해보겠다. Update AP.. 2023. 6. 4.
유저 업데이트 API, 삭제 API 개발과 테스트 유저 업데이트 API, 삭제 API 개발과 테스트 저번 시간에는 유저 생성 API와 조회 API를 만들어 보았다 이번에도 저번과 비슷하게 각 API의 스펙을 먼저 구상하고 진행해보겠다. 먼저 업데이트 API👉 HTTP Method : PUT HTTP Path : /user HTTP Body (JSON) { "id" : Long, "name" : String //변경되어야 하는 이름이 들어온다. } 결과 반환 X (HTTP 상태 200 OK이면 충분) HTTP Method 는 GET POST PUT중에 PUT을 사용할 것이고 Path는 /user PUT 같은 경우에는 쿼리와 Body중에 Body를 사용할 것이고 변경 대상의 id와 실제 변경대상인 name이 필요하다. 삭제 API👉 HTTP Method :.. 2023. 6. 4.
MySQL Reading table information for completion of table 오류 mysql -u root -p -a MySQL을 사용하다 데이터베이스를 들어가려고 하다보니 이런 문구가 출력이 되었다. Database changed가 되었다 뜨긴하는데 우선 데이터베이스가 들어가졌다하니 안에 테이블을 조회해 보겠다. 오류인줄알았는데 잘 출력되긴한다. 찜찜하니 이게 무너지 찾아보자면 특정 테이블을 제대로 읽지 못해 MySQL의 기능 중 하나인 Auto-rehash를 활성화하는데 문제가 생겼다는 뜻인거 같다. 그냥 해결 방법으로는 MySQL을 실행할 때 -A를 붙여서 실행하면 된다. mysql -u root -p -A 2023. 6. 4.
불리언대수와 드모르간의 법칙 컴퓨터 공학에서의 논리 연산은 불리언 대수(Boolean algerbra)라고도 알려진 수학적 체계를 기반으로 한다. 불리언 대수는 논리적인 참과 거짓의 값을 다루는 대수적인 구조를 제공하여 논리 연산을 수행한다. 불리언 대수는 주로 두 가지 값, 참(true)과 거짓(false)을 다룬다. 이러한 값은 일반적으로 1과 0으로 표현되기도 한다. 불리언 대수는 논리 연산자를 사용하여 불리언 값들을 조합하고 조작하는데 사용된다. 주요한 논리 연산자로는 AND, OR, NOT ,XOR등이 있다. AND연산자는 두 개의 입력이 모두 참일 때만 결과가 참이된다. OR연산자는 두 개의 입력 중 하나 이상이 참이면 결과가 참 NOT연산자는 입력을 반대로 뒤집어 참은 거짓으로, 거짓은 참으로 변환한다. XOR연산자는 .. 2023. 6. 3.