자바) Java 21의 주요 특징
·
자바 탐구
Java 21의 주요 특징 오라클이 최신 LTS버전인 Java21을 출시하였습니다. 미국 라스베이거스에서 개최한 연례 컨퍼런스 2023년 9월 19일(현지) "오라클 클라우드월드2023"에서자바 21 LTS(Long-Term Supprot) 버전을 출시한다고 발표하였습니다. 1.  SequencedCollection 자바 21 이전의 코드에서 List에서 첫 번째와 마지막 원소를 구하기 위해서는 아래와 같이 할 수 있습니다. List list = new ArrayList();String first = list.get(0);String last = list.get(list.size() -1);  자바 21 이후부터는 정해진 순서의 원소를 조회할 수 있는 컬렉션을 표현하는 새로운 인터페이스를 도입합니다.이를..
자바) Stream API - 3) 스트림(Stream)
·
자바 탐구
스트림(Stream)스트림(Stream)은 Java 8에서 추가되었습니다.개울, 시내, 줄기, 줄 등의 의미로 무엇인가가 줄줄이 이어져 있는 것을 의미합니다. 스트림(Stream)은 컬렉션과 같은 연속된 정보를 처리하는 데 사용합니다.컬렉션에는 스트림을 사용할 수 있지만, 배열에는 스트림을 사용할 수 없습니다.하지만, 배열을 컬렉션 List로 변환하는 방법이 존재합니다. Integer[] values = { 1, 3, 5 };List list = new ArrayList(Arrays.asList(values)); 대표적으로 위와 같이 Arrays 클래스의 asList() 메서드로 변환이 가능합니다.이 외에도 Stream 클래스를 이용하는 방법도 있습니다. 스트림의 구조 스트림은 다음과 같은 구조를 가집니..
자바) Stream API - 2) 함수형 인터페이스(Functional Interface)
·
자바 탐구
함수형 인터페이스(Functional Interface) 함수형 인터페이스(Funtional interface)는 추상메서드가 1개만 정의된 인터페이스를 의미합니다.앞서 포스팅한 내용(Strema API - 1) 람다 표현식)에서 함수형 인터페이스를 통해 람다 표현식을 이용하여함수형 프로그래밍 구현이 가능해집니다. Java 8에서 제공하는 Functional 인터페이스 java8에서 제공하는 주요 Functional 인터페이스는 java.util.function 패키지에 아래와 같이 있습니다.각 인터페이스는 매개 변수와 리턴되는 값에 따라 람다 표현식으로 표현이 가능합니다. Supplier 인터페이스@FunctionalInterfacepublic interface Supplier { T get();..
자바) Stream API - 1) 람다 표현식(Lambda Expression)
·
자바 탐구
람다 표현식(Lmabda Expression) 익명 클래스를 사용하면 가독성이 떨어지고 불편합니다.이를 보완하기 위하여 람다 표현식이 만들어졌습니다.람다 표현식은 대신에 메서드가 "하나"인 것들만 가능합니다. Java에 있는 메서드가 하나인 인터페이스  java.lang.Runnablejava.util.Comparatorjava.io.FileFilterjava.security.PrivilegeActionjava.nio.file.PathMatcherjava.lang.reflect.InvocationHandler 람다 표현식의 예 (int x, int y) -> x + y() -> 43(String s) -> { System.out.println(s); } 람다 표현식의 구조매개 변수 목록화살표 토큰(Arr..
스프링) 스프링이란?
·
자바 탐구
스프링이란? 스프링 프레임워크(Spring Framework)는 자바 플랫폼을 위한오픈 소스 애플리케이션 프레임워크로 간단히 스프링(Spring)이라고도 합니다. 스프링의 유래스프링은 JavaEE(Java Enterprise Edition)의 스펙을 구현한 EJB(Enterprise Java Bean)가기술의 복잡도가 증가해서 성능이 느렸던 것을 탈피하여, EJB 시절을 "겨울"에 빗대어 겨울 후의 "봄"으로새로운 시작을 의미하여 Spring(봄)이 되었습니다. EJBEJB는 비즈니스 객체들을 관리하는 컨테이너로부터 필요한 객체를 꺼내 사용하는 방식으로객체들 간의 의존성을 해결하려고 했습니다.하지만, 코드들이 EJB 기술에 지나치게 종속되는 문제가 발생하게 됩니다. POJO(Plain Old Java O..
JPA) N + 1 문제
·
자바 탐구
N + 1 문제 데이터베이스의 관계형 모델과 테이블 간의 관계를 다룰 때 주로 발생한다. 한 개의 쿼리로 데이터를 조회할 때, 해당 데이터에 연관된 다른 데이터들을 조회할 때 추가적인 쿼리가 n개 발생하는 현상이다. 주로 ORM(Object-Relational Mapping) 라이브러리를 사용하는 애플리케이션에서 발생하며, 지연 로딩(Lazy Loading)을 사용할 때 주로 발생한다. 해결 방법 해결방법으로는 Eager Loading(즉시 로딩)과 Fetch Joing이 있다. 1. Eager Loading(즉시 로딩) JPA에서 연관된 엔티티를 LAZY로딩으로 설정하여 쿼리가 실행될 때 실제로 연관된 엔티티를 가져오지 않고, 필요할 때 가져오도록 설정이 되어있다. Earger Loading을 사용하면..
자바) 예외 클래스
·
자바 탐구
예외 클래스 예외 (exception) 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류 예외가 발생하면 프로그램은 곧바로 종료된다는 점에서 에러와 비슷하지만, 예외는 예외처리(exception handling)를 통해서 프로그램을 종료하지 않고, 정상 실행 상태를 유지할 수 있도록 할 수 있다. 자바는 예외가 발생할 가능성이 높은 코드를 컴파일할 때 예외 처리 유무를 확인한다. 만약 예외 처리 코드가 없다면 컴파일이 되지 않는다. 하지만 모든 예외에 대해 예외처리 유무를 확인하는 것은 아니다. try-catch-finally 블록 try { 예외 발생 가능 코드 } catch(예외클래스 e) { 예외 처리 } finally { 항상 실행 } try 블록에는 예외 발생 가능..
자바) 오버로딩과 오버라이딩
·
자바 탐구
오버로딩과 오버라이딩 오버로딩 (Overloading) 클래스 내에 같은 이름의 메서드를 여러 개 선언하는 것 메서드 오버로딩의 조건 매개 변수의 타입, 개수, 순서 중 하나가 달라야 한다 class A { 리턴 타입 메서드명 (타입 변수, ...) { ... } 리턴 타입 메서드명 (타입 변수, ...) { ... } } 리턴타입 : 같아도 상관없음 메서드 이름 : 동일해야함 매개변수 : 매개변수의 타입, 개수, 순서가 달라야함 매개값을 다양하게 받아서 처리할 수 있도록 하기 위해서는 오버로딩이 필요하다. int plus(int x, int y) { int result = x + y; return result; } double plus(double x, doutble y) { double result ..
오지랖 토끼
'자바 탐구' 카테고리의 글 목록