본문 바로가기
반응형

전체 글903

Optional<List<Entity>> 잘못된 표기법 제목에 있는 그대로 내용을 다뤄볼것이다. 시작하기 앞서 Optional 에 대해서는 아래 참고 포스팅을 참고 바란다. Optional은 안에 값이 null인지 아닌지를 판별해주는 자바 8부터 지원되는 기능이다. JPA를 사용하면서 findBy 와 같은 쿼리메서드를 사용하면서 인자값을 optional로 받곤 하는데 list를 받을때 optional 을 사용하는 잘못된 코드를 발견하여 이렇게 포스팅으로 남겨둔다. 올바른 표기법은 둘중 하나이다. - Optional test - List test Optional test 위에껀 먼저 Entity 라는 항목이 null이거나 있거나이다. 이 기능은 findby 쿼리 메서드를 사용할 경우엔 Primary 한 값에 설정을 주로 해주며 1개만 있는 값을 받을때 사용한다.. 2023. 6. 30.
[Spring] BeanDefinition 이란? 결론 먼저 말하면 스프링 빈의 설정 메타 정보이고 Bean등록한 것들마다 하나씩 메타 정보가 생성이 된다. 스프링 컨테이너는 이 메타정보를 기반으로 스프링 빈을 생성하곤 한다. 이전에는 xml 위주로, 그리고 어느순간부터는 자바코드로, 그리고 지금은 어노테이션 등으로 빈 설정을 지원하고, 이 지원하는게 가능한 것이 바로 BeanDefinition 이라는 추상화가 있기에 가능하다. 아래 그림을 먼저 보면 BeanDefinition은 interface로 생성이 되어 역할을 갖고 아래 AppConfig 들이 각각 구현이 된다. 그리고 좀더 자세하게는 아래 그림을 보면 위에 AppConfig 를 그냥 읽는것이 아닌 ApplicationContext 에서 가능하게 한다. 그럼 BeanDefinition의 메타 정.. 2023. 6. 29.
[자바] 메모리 영역 Static, Stack, Heap Static 영역 Java 파일은 크게 필드(field), 생성자(constructor), 메서드(method)로 구성되어 있다. Static 영역은 그 중 필드 부분에서 선언된 전역변수와 정적 맴버 변수(static 으로 선언되는 것)들의 데이터를 메모리에 상주시킨다. 상수 개념의 static과 의미를 묶어서 보면 도움이 된다.(아래 참고 포스팅 참고) 정적 맴버 변수 = Static 변수와 Static 메서드가 합쳐진 것 (=클래스 멤버) 객체에 소속된 맴버가 아닌 클래스에 고정된 맴버다. 클래스 정보(맴버변수의 이름), static변수, 변수 정보(데이터타입, 접근제어자정보), 메서드 정보 등을 저장한다. static (전역)변수는 어디서든 접근이 가능하기 때문에 가능한 무분별한 사용을 하지 않는 .. 2023. 6. 28.
Git Flow 란? 먼저 시작에 앞서 git 에 대한 내용이 부족하다면 아래 참고 포스팅을 참고하여 git에 대해 알고 오는것이 도움이 될것이다. 이번 포스팅에서 소개하는 Git flow 란 Git 으로 개발할때 사용되는 방법론이라고 생각을 하면 된다. git을 사용하게 되면 branch 전략이 있는데 뭐 이름은 마음대로 생성할 수는 있지만. 권장하는 브랜치는 총 5개이다. master : 기준이 되는 브랜치로 제품을 배포하는 브랜치 입니다. develop : 개발 브랜치로 개발자들이 이 브랜치를 기준으로 각자 작업한 기능들을 합(Merge)칩니다. feature : 단위 기능을 개발하는 브랜치로 기능 개발이 완료되면 develop 브랜치에 합칩니다. release : 배포를 위해 master 브랜치로 보내기 전에 먼저 Q.. 2023. 6. 27.
[SQL 쿼리 튜닝] OR -> UNION ALL 변환 데이터베이스를 사용하다보면 많은 데이터를 갖고 있는 테이블에는 조회를 위해서 인덱스가 필요할 경우가 있다. 하지만 인덱스와는 별개로 쿼리를 좀더 튜닝을 하여 DBMS가 잘 읽을수만 있게 짜주는것만으로도 효과를 낼수가 있다. 요즘엔 DBMS 옵티마이저가 많이 똑똑해져서 실행계획을 잘 만든다고 들었다. 하지만 직접 명시해주는것만큼 확실한 방법은 없을것이다. 이번 포스팅에서는 쿼리 내의 OR조건을 UNION ALL 로 변환을 하며 쿼리를 개선하여 인덱스를 탈수 있도록 변경을 해볼 것이다. 먼저 UNION 과 UNION ALL 에 대한 개념은 아래 참고 포스팅을 참고 바란다. 일단 우선 UNION 과 UNION ALL 의 차이를 다시 소개하면. UNION은 중복제거 + 정렬까지 들어가게 된다. 즉, 연산이 필요.. 2023. 6. 26.
데이터베이스 테이블 합집합, 차집합(UNION, UNION ALL, MINUS, INTERSECT, EXCEPT) 데이터베이스를 사용하면 join이나 서브쿼리를 통해서 테이블을 합치곤 한다. 하지만 이렇게 합치는것은 수평적으로 하여 컬럼이 많아지도록 합치는 것이고, 오늘 소개할 UNION, UNION ALL, MINUS는 수직적으로 레코드들이 합쳐지는 것이다. Join에 대해서는 아래 참고 포스팅을 참고 바란다. UNION 과 UNION ALL의 차이 UNION은 두 개의 테이블을 하나로 만드는 연산이다. 두 개 테이블의 컬럼 수, 컬럼 데이터 형식이 모두 일치해야한다. UNION 연산은 두 개의 테이블을 하나로 합치면서 중복된 데이터를 제거한다. 그래서 UNION은 정렬을 발생시킨다. UNION ALL은 중복을 제거하거나 정렬을 유발하지 않는다. 둘 다 먼저 선행된 테이블의 이름을 기준으로 출력이되게 된다. 이에 .. 2023. 6. 25.
HttpServletRequest, HttpServletResponse에 대한 이해 was 에서 웹 브라우저로 요청을 받게 되면 아래 그림처럼 동작을 한다. 1. 요청 받는 정보를 HttpServletRequest객체를 생성하여 저장 2. 웹 브라우저에게 리턴할 HttpServletResponse객체를 생성(빈 객체) 3. 생성된 HttpServletRequest(정보가 저장된)와 HttpServletResponse(비어 있는)를 Servlet에게 전달 그러면 여기서 나오는 HttpServletRequest, HttpServletResponse 에 대해서 설명을 하면 다음과 같다. HttpServletRequest Http프로토콜의 request 정보를 서블릿에게 전달하기 위한 목적으로 사용 Header정보, Parameter, Cookie, URI, URL 등의 정보를 읽어들이는 메소.. 2023. 6. 24.
PCCP, PCCE 자격증 관련 코딩테스트를 연습하거나 다양한 취업 사이트 관련해서 프로그래머스 사이트를 이용하는 사람들이 많이 있다. 코딩테스트에 대한 자격증이 만들어져서 알아보기 위해서 적어본다. 프로그래머스 사이트 아래 참고. https://programmers.co.kr/ 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 그리고 PCCP 자격증과 PCCE 에 대한 자격증은 여기서 볼수 있다. https://certi.programmers.co.kr/about/main 시험 소개 | 코딩역량인증시험 코딩 역량에 대한 객관적 측정을 위해 체계적으로 설계된 프로그래머스 코딩역량인증시험 c.. 2023. 6. 23.
spring-boot-maven-plugin 자바에서 maven 관련해서는 아래 참고 포스팅 참고 바란다. Spring Boot Maven Plugin은 다음과 같은 Spring Boot 지원을 제공한다. 프로젝트를 실행가능한 jar 파일이나 war 파일로 패키지(package) Spring Boot 애플리케이션 실행 Build 정보 생성 통합 테스트를 하기 전에 Spring Boot 애플리케이션을 시작 그리고 maven 을 설정하는 pom.xml 파일에 아래 plugin 부분을 명시해줘야한다. org.springframework.boot spring-boot-maven-plugin ${parent.version} test org.projectlombok lombok 물론 groupId랑 artifactId만 작성해줘도 되는데, 다양한 옵션들을 함.. 2023. 6. 22.
반응형