1. 개요WAR(WEB Application Archive)와 JAR(Java Archive)는 Java 기반 애플리케이션을 패키징하는 두 가지 방식입니다.JAR (Java Archive): 일반적인 Java 애플리케이션을 실행 가능한 파일로 패키징하는 방식.WAR (Web Application Archive): 웹 애플리케이션을 패키징하여 웹 서버(WAS, Tomcat 등)에 배포하는 방식.2. WAR vs JAR 개념구분WAR (Web Application Archive)JAR (Java Archive)설명웹 애플리케이션을 위한 패키징 방식 (Servlet, JSP, Spring MVC)일반적인 Java 애플리케이션 패키징 방식 (Spring Boot, Java 프로그램)사용 대상전통적인 Sprin..
정적 팩토리 메서드(Static Factory Method)정적 팩토리 메서드(Static Factory Method)는 클래스의 인스턴스를 생성하는 정적(static) 메서드입니다. 일반적인 new 키워드를 사용한 생성자 호출보다 더 유연하고 가독성이 좋은 객체 생성 방법을 제공합니다. 정적 팩토리 메서드는 객체 생성을 캡슐화하는 static 메서드입니다. 이 패턴은 생성자 대신 또는 생성자와 함께 사용되어 객체 생성 과정을 더 유연하게 의미있게 만듭니다.-> 쉽게 말해 생성자로 인스턴스를 생성하지 않고, static Method를 사용해 인스턴스를 생성하는 방식1. 정적 팩토리 메서드의 특징이름을 가질 수 있다.생성자와 달리 메서드 이름을 지정할 수 있어, 반환될 객체의 의미를 명확하게 표현할 수 있..
Map이란?map은 스트림 내부의 요소 하나하나에 접근해서 제가 파라미터로 넣어준 함수를 실행한 뒤 최종연산에서 지정한 형식으로 반환해주는 메서드 입니다. List people = Arrays.asList( new Person("personA", 24), new Person("personB", 26), new Person("personC", 28), new Person("personD", 30) );위와 같은 리스트를 예시로 만들어보겠습니다. List nameList = people.stream() .map(person -> person.getName()..
객체지향에 집중하고, 특정 클래스나 라이브러리에 종속되지 않는 필요에 따라 재활용 될 수있는 방식으로 설계된 오브젝트 POJO는 특정한 Java 객체로, 특별한 프레임워크나 라이브러리의 요구 사항을 따르지 않는 순수한 Java 객체를 의미합니다. POJO는 Java 언어 자체의 기능만을 이용하여 작성된 객체로, 주로 데이터 모델을 표현하는 데 사용됩니다. POJO (Plain Old Java Object)가 뭘까?[ 위키백과 ]Plain Old Java Object, 간단히 POJO는 말 그대로 해석을 하면 오래된 방식의 간단한 자바 오브젝트라는 말로서 Java EE 등의 중량 프레임워크들을 사용하게 되면서 해당 프레임워크에 종속된 "무거운" 객체를 만들게 된 것에 반발해서 사용되게 된 용어이다. 200..
간단정리DAO : 실제 Database에 접근하는 역할을 하는 객체.DTO : 데이터를 전달하기 위한 객체VO : 값 자체를 표현하는 객체. (변경 불가능하며 오직 읽기만 가능 (Read-Only))Entity : 실제 DB 테이블과 매핑이 되는 클래스.DAO (Data Access Object)DAO는 Data Access Object의 약자로, 실제로 Database(DB)의 데이터에 접근하기 위한 객체를 가리킨다.DB에 접근하기 위한 로직과 비즈니스 로직을 분리하기 위해 사용한다. 직접 DB에 접근하여 data를 삽입, 삭제, 조회 등 조작할 수 있는 기능을 수행한다.JPA에서는 DB에 데이터를 CRUD 하는 JpaRepository를 상속받는 Repository 객체들이 DAO라고 볼 수 있습니다..
@Data @Data는 @Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode을 한꺼번에 설정해주는 매우 유용한 어노테이션입니다. @Data public class User { // ... } 사용 방법은 다른 어노테이션들과 대동소이합니다. 클래스 레벨에서 @Data 어노테이션을 붙여주면, 모든 필드를 대상으로 접근자와 설정자가 자동으로 생성되고, final 또는 @NonNull 필드 값을 파라미터로 받는 생성자가 만들어지며, toStirng, equals, hashCode 메소드가 자동으로 만들어집니다. @Builder 어노테이션 만일 이 어노테이션이 없었다면 After 부분을 일일이 직접 구현해줘야했다. // Before: ..
모든 기능을 추상화로 정의만 하고 구현은 하지 않은것을 의미한다. 객체지향 solid 개발을 구현하게 도와줍니다. 인터페이스(interface)란? 자식 클래스가 여러 부모 클래스를 상속받을 수 있다면, 다양한 동작을 수행할 수 있다는 장점을 가지게 될 것입니다. 하지만 클래스를 이용하여 다중 상속을 할 경우 메소드 출처의 모호성 등 여러 가지 문제가 발생할 수 있어 자바에서는 클래스를 통한 다중 상속은 지원하지 않습니다. 하지만 다중 상속의 이점을 버릴 수는 없기에 자바에서는 인터페이스라는 것을 통해 다중 상속을 지원하고 있습니다. 인터페이스(interface)란 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미합니다. 인..
자바 스레드(Thread)와 멀티 스레드(Java Multithreading) 자바 프로그래밍에서 가장 중요한 기능 중에 하나가 바로 Multithreading이다. 그만큼 코딩 과정에서 많이 사용하는 기능이자 멀티스레드를 어떻게 사용하느냐에 따라서 프로그램의 효율성도 달라진다. # 멀티 쓰레드와 멀티 프로세스 우선 멀티 쓰레드와스레드와 멀티 프로세스에 대해서 간략하게 확인하고 가자. 멀티 스레드와 멀티 프로세스에 대해서 혼란스러워하는 경우가 있는데 둘은 다른 기능을 의미한다. 멀티 스레드는 하나의 프로세스에서 여러 개의 작업을 하도록 해주는 기능이며, 멀티 프로세스는 여러 개의 프로세스를 사용하여 병렬적 일 처리를 할 수 있게끔 해주는 기능을 의미한다. 아래의 그림을 참고하면 이해하기 훨씬 쉬울 것이다..