Home
won983212
Cancel

[Spring JPA] Fetch Join vs 일반 Join

일반 Join JPQL에서 사용하는 Join문법은 SQL과 매우 유사합니다. select m from Member m inner join m.team t 이런식으로 내부 조인을 할 수 있습니다. inner 키워드는 생략할 수 있습니다. 위의 jpql을 수행해보면 아래와 같은 쿼리가 나옵니다. (Mysql 기준) select ...

[Spring JPA] JPA 상속관계 매핑

DB에서의 상속 관계 우리는 JPA를 사용해서 ‘객체지향적’으로 Entity를 관리하고 사용합니다. 그래서 Entity도 객체지향적으로 사용하고싶습니다. 하지만 관계형 DB는 상속 관계를 지원하지 않습니다. 객체지향에서의 상속을 Entity에 적용해서 사용할 수는 없을까요? JPA에서의 상속 관계 이때 사용하는 것이 상속관계 매핑입니다. 위에서 ...

[Java] Stream 병렬 처리

자바에서의 동시성 처리 기존 자바에서는 병렬 처리를 위해 별도의 Thread를 만들어 관리하거나 ThreadPool을 사용했습니다. 주로 Executor를 사용해서 ThreadPool을 만들어 사용했는데, 이보다 더 쉽게 병렬처리할 수 있도록 Java8부터 Parallel Stream이 도입되었습니다. 사용법은 매우 단순합니다. 아래는 일반 str...

[Java] Java Hashmap의 원리

HashMap HashMap은 Java에서 사용하는 대표적인 Map 구현체입니다. 이름에서 알 수 있듯이 Hash를 사용해서 Key와 Value를 매핑합니다. Map<Integer, String> map = new HashMap<>(); map.put(1, "HI"); System.out.println(map.get(1)); ...

[Spring JPA] Entity column Type으로 primitive vs wrapper

Auto boxing/unboxing 우리는 자바에서 Integer 타입의 변수를 마치 int처럼 사용할 수 있는데, 이는 auto boxing/unboxing 덕분입니다. Auto boxing과 unboxing은 wrapper class를 사용할 때만 일어납니다. Primitive type만 사용한다면 auto boxing/unboxing이 일어...

[Spring] properties vs yaml

Properties Key-value를 사용한다. List를 표현할 수 있지만, 다소 반복이 많다. 프로필을 나누려면 여러 파일을 사용해야한다. YAML 데이터를 계층형 구조로 표현한다. 그래서 읽기가 더 쉽다. List를 쉽게 표현할 수 있다. 들여쓰기를 엄격하게 검사한다. 하나의 파일에 여러 프로필을 정의할 수 ...

[Programming] Git을 사용해야하는 이유

여러분은 소스 코드를 어떻게 관리하시나요? 지금이야 Git을 주로 활용하겠지만, 개발을 배운지 얼마 안되었을 때는 소스 코드 파일을 직접 들고다니셨을겁니다. USB에 담거나, 클라우드에 넣어 다니거나 등… 가장 직관적인 방법이긴한데… 이렇게 통째로 들고다니면 문제점들이 있어요. 버전 별로 코드를 관리하기 힘들다. (굳이 하려면 모든 버전의 소스...

[Programming] 왜 DI(Dependency Injection)를 사용해야 하는가?

유지보수하기 좋은 코드 어떤 프로그램이든 유지보수는 반드시 뒤따라 옵니다. 버그 수정, 기능 개선, 클라이언트의 요청 등에 따라 프로그램은 계속 바뀝니다. 그런데 만약 수정하기 어렵게 프로그램을 설계했다면? 유지보수하는 입장에서는 지옥일겁니다. 정말 간단한 기능 하나를 추가하려는데 이곳저곳을 수정해야한다면 개발 의욕이 뚝 떨어질 것 같네요. 요구사...

[Java] Float, Double 비교시 주의할 점

동등성 판별시 부동소수점 오차 System.out.println(0.1 + 0.2 == 0.3); // false 위의 코드는 놀랍게도 false를 출력합니다. 이는 부동소수점 오차로 인해 발생하는 문제입니다. 컴퓨터에서 소수점을 표현하는 방식으로 2가지가 있습니다. 고정 소수점 방식과 부동 소수점 방식입니다. 고정 소수점 방식은 부호, 정수부...

[Java] Wrapper class valueOf 캐싱

Integer의 valueOf 캐싱 Integer의 valueOf는 -128부터 127사이의 값들을 미리 만들어두고 변환합니다. 아래 그림과 같이 말이죠. public static Integer valueOf(int i) { return i >= -128 && i <= Integer.IntegerCache.high ? I...