본문 바로가기

Java

(8)
Spring Boot - Querydsl 1. Querydsl이란?Querydsl은 Java 애플리케이션에서 타입 안전한 쿼리를 작성할 수 있도록 도와주는 라이브러리로, 기본적으로 Q 클래스를 통해 엔티티 클래스의 속성에 접근하여 동적 쿼리를 생성한다. Q 클래스는 컴파일 타임에 타입 안전성을 제공하며, 이를 통해 쿼리 빌더(JPAQuery, SQLQuery 등)를 사용해 조건에 맞는 쿼리를 동적으로 구성할 수 있다. 쿼리 실행 시, 데이터베이스에 맞게 변환된 쿼리가 실행되며, 결과는 fetch(), fetchOne(), fetchCount() 등의 메서드를 통해 반환된다. 이 방식은 SQL 문자열을 직접 작성하는 대신 Java 코드로 쿼리를 작성함으로써 가독성을 높이고 오류를 줄이며, 동적 쿼리 생성을 통해 복잡한 조건을 효율적으로 처리할 수..
Spring Boot - ResponseEntity 클래스 ResponseEntitySpring Framework에서 HTTP 응답을 제어할 수 있는 클래스이다. 주로 Web Apllication에서 RESTful API를 구현할 때 사용되며, 본문(body), 상태 코드(status code), 헤더(headers) 등을 설정하는데 사용한다. 주요 특징Body : 응답의 본문을 설정한다. JSON, 문자열, 객체 등을 반환할 수 있다.Status Code : HTTP 상태 코드를 설정할 수 있다. 200 OK, 404 Not found, 201 Created 등이 있다.Headers : HTTP 응답 헤더를 설정할 수 있다. Content-Type, Authroization 등의 헤더를 추가할 수 있다. 기본 사용법@GetMapping("/message")pu..
[Java] Thread 자바에서 여러가지 일을 동시에 처리하기 위해 사용되는 것이 스레드(Thread)이다. 먼저 프로세스와 스레드를 알아보자 프로세스프로세스(Process)는 일반적으로 cpu에 의해 실행중인 프로그램을 말하고, 자신만의 메모리 공간을 포함한 독립적 실행 환경을 가지고 있다. 우리가 사용하는 프로그램의 일부는 여러 프로세스간 상호작용을 하는 것일수 있다.자바JVM(Java Virtual Machine)은 주로 하나의 프로세스로 실행되며, 동시에 여러 작업을 수행하기 위해 멀티 스레드를 지원하고 있다.스레드스레드(Thread)는 프로세스안에서 실행하는 작은 단위를 말하며 JVM에 의해 관리된다. 프로세스는 적어도 한 개 이상의 스레드가 있으며, Main 스레드 하나 시작하여 스레드를 추가 생성하게 되면 멀티스레..
[Java] Optinal 클래스 사용해보기 Optinal은 자바 8부터 도입된 클래스이다. 값이 존재할 수도 있고 존재하지 않을 수도 있는 경우에 사용된다. null을 직접 다루는 것보다 안전하고 명확한 코드를 작성할 수 있으며 적절히 사용하면 가독성이 좋아진다. of로 옵셔널 객체 생성이 가능하며 get으로 객체를 언박싱 할 수 있다.String a = "hello"; // 옵셔널 객체 생성 Optional optional = Optional.of(a); // String 객체로 꺼내기 System.out.println(optional.get()); ofNullable로 비어있는 옵셔널 객체로도 생성이 가능하다.Optional nullOptional = Optional.ofNullable(null); isPresent로 객체가 비어있는지도 확인..
[Java] Collection Framework 총 정리 Framework의 이해 프레임워크는 여러 분야에서 사이한 개념으로 사용되기 때문에 이에 대한 정확한 의미 파악은 쉽지 않다. 하지만 공통적으로 "잘 정의된 구조 또는 골격" 이라는 의미를 가진다. 따라서 자바에서 말하는 프레임워크는 "잘 정의된 구조의 클래스들" 이라 볼 수 있다. 즉 프레임워크는 프로그래머들이 쓸 수 있도록 잘 정의된 클래스들의 모임이라 할 수 있는데, 이는 '라이브러리'라 불리게 된다. 하지만 '컬렉션 라이브러리'가 아닌 '컬렉션 프레임워크'라 한다. 그 이유는 관련된 클래스의 정의에 적용되는 설계 원칙 또는 구조가 존재하기 때문이다. Collection Framework 데이터의 저장 방법, 그리고 이와 관련 있는 알고리즘에 대한 프레임워크이다. 자료구조, 알고리즘, 제네릭 기반의..
[Java] InterFace 정리(1) 인터페이스 원리 인터페이스의 기본 골격은 클래스와 동일하다. 대신 class 대신 interface라 선언 되어있고, 메소드는 몸체없이 마무리된다. interface interF{ public void print(String dog); } 메소드의 몸체가 비어있는 메소드를 가리켜 추상 메소드(Abstract Methods)라 하며 인스턴스 대상으로는 인스턴스 생성이 불가능하다. 다만 클래스에 implements 키워드가 사용되어 상속이 아닌 '구현'의 대상이 된다. 구현할 인터페이스를 명시할 떄는 implements를 사용 한 클래스는 둘 이상의 인터페이스를 구현 가능 상속과 구현은 동시에 가능 두 인터페이스를 선언 package interFaces; public interface Printer{ pub..
[Java] 자바 상속 정리 상속 코드로 한번에 보기 package 상속; public class Man { String name; public void sayName(){ System.out.println(name); } public int add(int a, int b){ return a+b; } } class BusinessMan extends Man{ //super 키워드는 부모의 객체를 찾는다. public String getParentsName(){ return super.name; } // Man을 상속받아서 sayName을 호출 public void say2(){ sayName(); } @Override // Override = 재정의 public void sayName() { System.out.println("재정..
[Java] 접근 수준 지시자(Access-level Modifiers) 접근 수준 지시자는 이름 그대로 접근의 허용 수준을 결정할 때 선언하는 키워드이다. 네 가지 접근 수준 지시자 public protected private default 이러한 선언을 할 수 있는 종류는 두 가지 이다. 클래스 클래스의 인스턴스 변수와 메소드 클래스 정의 대상 - public, defalut 인스턴스 변수와 메소드 대상 - public, protected, private, default 클래스의 선언 public class A{} class B{} (public) 클래스 A는 어디서든 인스턴스 생성이 가능하다. (defalut) 클래스 B는 동일 패키지로 묶인 클래스 내에서만 인스턴스 생성을 허용한다. animal 패키지에 있는 Dog 클래스는 defalut로 선언 되었으므로 다른 패키지..