본문 바로가기

전체 글42

[QueryDSL] JPQL vs Query DSL SQL과 오타 Mybatis, JDBC Template, JPQL 은 모두 쿼리문을 String 형식으로 직접 작성해서 구현하게 된다. 심지어 Spring Data JPA도 때때로 NativeQuery로 작성해야 한다. 백엔드 개발 경험이 한 번이라도 있다면, 쿼리를 작성하다가 오타가 난 경험이 있을 것이다. String으로 이뤄져 있기에 컴파일 단계에서 디버깅이 불가능하다. 그 말은 에러가 발생해도 띄어쓰기를 잘못 한 건지 대소문자를 잘못 쓴건지 알 수가 없다는 말이다. QueryDSL은 자바코드로 쿼리를 만들기 때문에 컴파일 시점에서 오류를 잡을 수 있고, 메서드 형식으로 작성하기 때문에 IDE 코드 어시스턴트의 도움도 받을 수 있다. 특히 현업에서 여러 번의 Join과 동적쿼리를 작성할 때, 그 진.. 2021. 3. 26.
[QueryDSL] 인텔리제이 환경설정 기본 환경 JAVA 11 Gradle InteliJ Community Edition 프로젝트 생성 스프링 부트 스타터(https://start.spring.io/) 사용기능 : Spring Web, Spring Data JPA, Lombok SpringBoot Version : 2.4.4 이번 포스팅에서는 DB 관련 설정은 건너뛰고 Query DSL 설정만 하도록 하겠습니다. build.gradle에 Query DSL 관련 내용을 추가해야 한다. 하기 전에 일단 SpringBoot가 정상 동작하는지 확인 후 진행하는 것을 추천한다! 우선 가장 위 plugin에 한 줄. plugins { id 'org.springframework.boot' version '2.4.4' id 'io.spring.depend.. 2021. 3. 26.
[JAVA] static 메소드 Spring 오픈 카톡방에 흥미로운 질문이 올라왔다. 부모클래스의 static 메소드를 오버라이딩한 자식메소드에서 왜 super로 접근이 불가능 하냐는 질문이었다. static 메소드 자바에서 메소드에 static을 붙이면 Class.methodName(); 으로 호출이 가능하다. 대신에 이렇게 만들어진 static 메소드는 해당 클래스로 부터 만들어진 인스턴스에서 호출할 수 없다. 그래서 클래스 메소드라고 부르기도 한다. 앞서말한 코드를 보자, 메소드 내부에 super를 참조하는 내용을 작성하기 전까지는 오류가 나지 않았는데, 작성하니 저런 오류가 발생했다. 원인은 근본적인 곳에 존재했다. 애초에 this, super는 클래스 기준의 this, super로의 참조가 아닌 생성된 객체 기준에서 this,.. 2021. 3. 25.
[JPA] JPA 임베디드 타입 (값 타입 과 불변객체) JPA의 데이터 타입 JPA의 데이터 타입은 크게 두 가지 엔티티 타입과 값 타입으로 나뉜다. 엔티티 타입은 연관관계 매핑 시, @Entity로 선언한 객체를 필드 값으로 넣은 것을 떠올리면 되고, 값 타입은 int, Integer, String처럼 그 자체가 단순한 값을 가지고 있는 타입들이 속한다. - 엔티티 타입 - @Entity로 정의하는 객체 - 데이터가 변해도 식별자로 추적 가능 - 예) Member 엔티티 이름, 나이 등을 변경 시 id값으로 식별할 수 있음. - 값 타입 - 단순히 자바 기본 타입이나 객체 - 식별자가 없고 단순한 값이므로 추적이 불가능함. - 예) 물품 개수를 100개에서 200개로 변경하면 완전히 다른 값으로 대체된다. 엔티티 타입은 @Entity로 선언한 객체 자체를 .. 2021. 3. 25.
[Clean Code] 클린 코드 스파게티 코드 스파게티 코드는 컴퓨터 프로그램의 소스 코드가 복잡하게 얽힌 모습을 스파게티의 면발에 비유한 표현 3개월 아니, 불과 며칠 전에 자신이 작성한 코드를 볼 때, 잘 읽히지 않거나, 전혀 해석이 안 되는 경험을 한 적이 있을 것이다. (그런 적이 없다면 부럽다...) 생각해보면 알고리즘 문제를 풀거나 프로젝트를 진행하는 와중에도 그런 적이 많았던 것 같다. 나름대로 들여 쓰기도 하고 변수명, 함수명도 간결하게 작성하려고 노력하는데, '왜 잘 읽히지 않을까?' 다시 한 번 생각해봤다. 다른 사람의 코드가 잘 읽힌 적이 있었는지... 딱히 없는 것 같다... 왜 없을까 ?? 그냥 내가 코드를 잘 읽는 방법을 모른다면, 그래서 깔끔하게 코딩하는 방법을 잘못 이해하고 있었다면...? 그저 혼자만의 룰.. 2021. 3. 25.
[Redis] Redis 란 무엇인가? Redis에 대해 알아보기 전에 일단 NoSQL에 대해 알아보자. - NoSQL NoSQL. 이름만 들었을 때는 "뭐지? SQL문 없이 쓰는 건가?"라고 생각하기 쉽다. 하지만 No SQL은 Not Only SQL의 줄임말로, 비관계형 데이터베이스를 지칭하고 NoSQL은 Key-Value나 컬럼, 문서 형식으로 데이터를 관리한다. (일반적으로 먼저 접하게 되는 MySQL, MariaDB은 대표적인 관계형 데이터베이스(RDBMS)이다.) NoSQL은 아주 많은 양의 데이터를 효율적으로 처리가 필요할 때, 데이터의 분산처리, 빠른 쓰기 및 데이터의 안정성이 필요한 경우에 RDBMS 보다 적합하다. - Redis (InMemory Data Structure Store) REDIS(REmote Dictionar.. 2021. 3. 23.
728x90