본문 바로가기

☕Java101

API Docs 읽기 - 자바 String String은 상수임. 기본적으로 String 생성자나 메서드에 null 인자를 넣으면 NullPointerException을 발생시킨다.(예외 있음. valueOf()의 경우 null이 들어가면 "null" 반환.) String은 UTF-16 포맷 문자열을 표현한다. 2022. 9. 17.
java.util.Date, java.util.Calendar 클래스를 사용하면 안 되는 이유 java.util.Date, java.util.Calendar 클래스는 자바에서 날짜, 시간 관련 작업이나 연산을 수행하기 위한 클래스이다. 자바가 발전해감에 따라 두 클래스의 문제점이 드러나기 시작했고 JDK 1.8에서 두 클래스를 대체할 java.time 라이브러리가 등장하였다. Date, Calendar 클래스를 사용하지 말아야 하는 이유를 나열하면 다음과 같다. 두 클래스 mutable 하기 때문에 객체의 메서드나 변수를 수정할 경우 참조하는 객체들의 값들이 변경된다. calendar의 상수를 남용할 가능성이 있다. 월 값이 0부터 시작하여 직관적이지 않다. timezone이 없다. 새로운 JDK가 계속 출시되면서 대부분의 메서드는 deprecated되었다. 이름은 date인데 실제로는 date와.. 2022. 8. 1.
String, StringBuffer, StringBuilder 비교 mutable immutable 동기화 지원, thread-safe StringBuffer String 동기화 지원 안 함 StringBuilder String, StringBuffer, StringBuilder는 모두 문자열을 다루는 클래스이다. 하지만 각각 다른 특성을 갖고 있다. 먼저, String은 불변(immutable) 속성을 가진다. '불변'이란 메모리의 한 공간에 처음 값이 할당되고 나면 변하지 않음을 뜻한다. 그렇다고 한 번 할당한 변수에 다시 할당한다고 예외나 오류가 발생하지 않는다. 이때는 새로운 값을 가진 객체를 새로 생성하고 그 객체를 가리키게 된다. 처음에 생성된 객체는 힙 영역에 남아 있다가 가비지 컬렉션의 대상이 된다. 값을 할당할 때마다 새로운 객체가 생성되므로, Strin.. 2022. 7. 24.
QueryDSL 정리 JPA를 사용하면서 동적 쿼리를 위해 QueryDSL을 사용하기로 결정하면서 QueryDSL을 공부하기 시작했다. 공부한 내용을 간단히 정리해본다. QueryDSL은 JPA 사용 시 SQL처럼 쿼리를 작성할 수 있게 해주고 복잡한 쿼리와 동적 쿼리를 쉽게 사용할 수 있도록 도와주는 프레임워크이다. 런타임이 아니라 컴파일 타임에 오류를 잡을 수 있다. QueryDSL 사용시 'Q + 엔티티 이름' 형태의 Q class가 생성된다. Spring DataJpa와 다르게 Repository 클래스를 직접 만들어 사용한다. Repository 클래스에는 EntityManager와 QueryFactory를 주입하여 사용한다. 쿼리 중 where 조건 절 사용 시 Predicate를 사용한다. 2022. 7. 3.
728x90