Backend
-
정규화 (제 1정규화 ~ 제 3정규화)Backend/DB 2022. 11. 14. 11:29
과거 정보처리기사를 공부하면서는 도부이결다조로 외웠지만, 그렇게 외운 것은 까먹기 일수였고 당시 제대로 이해하지 못했어서 다시 한번 정리해보고자 한다. 1. 제 1정규화 (릴레이션에 속한 모든 속성의 도메인이 원자 값(atomic value)으로만 구성) [표 9-5] 다중값 속성을 포함하는 이벤트참여 릴레이션 (제 1 정규화 위배) 고객아이디 이벤트번호 당첨여부 등급 할인율 apple E001, E005, E010 Y, N, Y gold 10% banana E002, E005 N, Y vip 20% carrot E003, E007 Y, Y gold 10% orange E004 N silver 5% apple이란 고객 아이디는 여러 개의 이벤트번호를 가지기에 모든 속성의 도메인이 원자값으로 구성됐다고 볼..
-
group by count 0 적용 count ifnull 안됨Backend/DB 2022. 11. 7. 14:28
# Mysql 에서 join 후 group by 시에 null값 혹은 0 값은 나오지 않을때 # group by count 0 적용 count ifnull 안됨 select count(e.ESSAY_ID) as totalCount from score s, essay e where s.ESSAY_ID = e.ESSAY_ID and e.user_id = :user_id group by e.user_id; user_id로 group by한 다음에 count를 해주는 쿼리이다. 이 때, user_id로 그룹핑 해주었을 때 row값이 하나도 없으면 상식적으로는 0을 뱉을거라 생각했지만 그렇지 않았다. 그렇다고 count(ifnull(e.ESSAY_ID, 0))를 한다고 0이 나오지도 않았다. score essay..
-
overloading vs overriding 차이 오버로딩 vs 오버라이딩 차이Backend/Java 2022. 10. 31. 20:35
1. 오버로딩 같은 이름의 메서드(함수)를 여러개 가지면서 매개변수 유형과 개수가 다르도록 하는 것 class TestOverloading { //매개변수가 없는 sol 메서드 void sol() { System.out.println("매개변수가 없습니다"); } //매개변수가 int형 2개인 sol 메서드 void sol(int a, int b) { System.out.println("매개변수" + a + "와" + b); } //매개변수가 String형 1개인 sol 메서드 void sol(String c) { System.out.println("매개변수" + c); } } public class TestOverLoad { public static void main(String[] args) { Te..
-
intelij로 jar 앱으로 따로 배포하기Backend/Springboot 2022. 10. 26. 14:48
작업을 하다보면, 개발 서버와 운영 서버를 분리할 필요성이 있었고 운영 서버를 분리하기 위해 jar앱을 배포하는 방법을 찾아보았다. 방법은 간단하다. 1. 오른쪽에 보이는 Gradle 클릭 2. Gradle이 오픈되면 아래의 bootJar 클릭 클릭시, 왼쪽의 build 폴더 아래에 libs라는 폴더가 생긴다. 3. libs 아래에 있는 ㅇㅇㅇ.jar 다른 cmd 열어서 실행해주기 이제 저 녀석만 실행해주면 되는데 나의 경우엔 cmd를 분리하기 위해 따로 cmd를 켜서 해당 경로로 들어가 java.jar ㅇㅇㅇ.jar로 실행해주었다. 운영 서버는 cmd로 따로 실행해주었으니, 이제 개발 서버를 실행해보자 4. 포트 바꿔서 개발 서버 실행하기 나의 경우 포트 설정을 따로 해주지 않아 jar 파일은 8080..
-
logback There is no conversion class registered for composite conversion word [clr] errorBackend/Springboot 2022. 10. 25. 13:15
logback-spring.xml 설정 시 아래와 같은 에러가 뜰 수 있다. %PARSER_ERROR[clr] %PARSER_ERROR[clr] %PARSER_ERROR[clr] %PARSER_ERROR[clr] %PARSER_ERROR[clr] %PARSER_ERROR[clr] Application run failed java.lang.IllegalStateException: Logback configuration error detected: ERROR in ch.qos.logback.core.pattern.parser.Compiler@46cdf8bd - There is no conversion class registered for composite conversion word [clr] ERROR i..
-
Logback을 통한 Log 관리하기Backend/Springboot 2022. 10. 25. 13:12
1. Logback 이란? - java.util.logging, log4j, log4j2등을 잇는 자바 로깅 프레임워크 - spring boot에서는 기본 로깅 모듈로 채택 1-1. slf4j (Simple Logging Facade For Java) - 자체적인 로킹 프레임워크가 아니고 logger 추상체로써 다른 로깅 프레임워크가 접근할 수 있도록 도와주는 추상화 계층 - 즉, logback이나 log4j2와 같은 로킹 프레임워크의 인터페이스의 역할 - slf4j2를 이용하면 코드를 일정하게 유지하면서 구현체의 전환을 통해 다른 로깅 프레임워크로이 손쉬움 1-2. log4j vs logback vs log4j2 Log4j Logback Log4j2 가장 오래된 로깅 프레임워크 2015년 이후 개발 중..
-
int와 Integer 차이Backend/Java 2022. 10. 4. 20:59
일단 int는변수의 타입으로 primitive type(기본형) 중 하나이다. primitive type에는 위와 같은 종류들이 있다. Integer은Wrapper class의 하나이다. Wrapper class는 기본형을 객체로 다루기 위해서 사용하는 클래스이다. 모든 기본 형은 Wrapper class를 생성할 수 있고 종류는 아래와 같다. 기본형을 언제 객체로 다룰 때 주로 쓸까를 생각해보면 1. 기본형 값이 아닌 객체로 저장해야할 때 2. 객체 간 비교가 필요할 때 3. 매개변수로 객체를 필요로 할 때 가 있을 수 있다. 또한 나의 경우 현업에서 언제 질문을 받았냐면, Repository에서 받아오는 데이터가 숫자의 형태였고 아무생각없이 Integer를 선언해서 받아왔다. 사수님이 왜 int가 아..
-
JPA Repository 호출 시 NullPointerException, Cannot invoke "repository.메소드명()" because "this.repository" is null 해결 방법Backend/Springboot 2022. 10. 4. 17:28
생성자가 주입되지 않아 생긴 문제 1. 접근자를 final로 선언해야 롬복이 작동하므로 final로 repository를 선언 2. 해당 클래스 위에 lombok의 @RequiredArgsConstructor를 attach해준다. 사용 예시 @Service @RequiredArgsConstructor public class MyInfoService { final UserRepository userRepository; final EssayRepository essayRepository; public MyInfoDto.Response getMyInfo(String user_id) { User myInfo = userRepository.findByUserId(user_id); List essay = essay..