java 95

[Java] 레이어드 아키텍처와 mvc

1. 레이어드 아키텍처애플리케이션을 여러 계층으로 나우어 각 계층이 특정 역할을 담당하고록 설계하는 방식.1.1. Presentation Layer (표현 계층)사용자가 애플리케이션과 상호작용하는 계층예: Controller, View역할:REST API 요청을 받아 처리하고, 응답을 반환데이터 출력 형식을 결정(HTML, JSON, XML 등)구현: `@Controller`, `@RestController` 등이 포함1.2. Application Layer (서비스 계층)비즈니스 로직이 구현되는 계층예: Service역할:Presentation Layer와 Data Layer 간의 중간다리 역할비즈니스 규칙 처리여러 Repository나 외부 API 호출 등을 조합구현: `@Service` 애너테이션을..

BE/Java 2024.12.15

[Spring Boot] ApplicationRunner

ApplicationRunner란Spring Boot 애플리케이션 에서 애플리케이션 이 시작된 후 실행할 코드를 정의하기 위해 사용되는 인터페이스다.주로 초기화 작업이나 애플리케이션 시작 시 필요한 논리를 실행할 때 활용된다 특징애플리케이션 초기화 작업 수행 : 데이터베이스 초기화, 캐시 로드, 외부 API 호출 등Spring Boot 컨텍스트가 완전히 초기화된 후 실행 : 모든 Bean이 로드되고 애플리케이션 컨텍스트가 준비된 상태에서 실행된다CommandLineRunner와 유사 : 차이점은 `ApplicationRunner`는 `ApplicationArguments`를 사용하여 더 구조화된 방식으로 인수를 처리할 수 있다 ApplicationRunner 사용 방법1. ApplicationRunner..

[Spring Boot] ORM, @Query

ORM은 객체와 데이터베이스의 관계를 매핑하여, 객체지향 프로그래밍 언어의 객체를 데이터베이스의 테이블에 대응시키는 기술이다. 개발자는 SQL을 직접 작성하지 않아도 객체지향 방식으로 데이터를 다룰 수 있다 장점생산성 향상: 데이터베이스 쿼리를 객체지향 방식으로 다룰 수 있어 코드 작성이 단순해짐가독성 증가: 객체와 테이블 간 매핑으로 인해 코드가 더 직관적이고 읽기 쉬움유지보수 용이: 데이터베이스가 변경되더라도 매핑 설정만 수정하면 애플리케이션 수정 최소화데이터베이스 독립성: 특정 데이터베이스에 종속되지 않고 다양한 데이터베이스에서 동작 가능단점성능 오버헤드: ORM이 쿼리를 자동으로 생성하므로 직접 작성한 SQL보다 성능이 낮을 수 있음복잡한 쿼리 처리 어려움: 복잡한 비즈니스 로직이 필요한 경우 S..

[Spring] Spring 과 Spring Boot

1. Spring 프레임워크1.1. Spring이란Spring은 효율적으로 개발할 수 있도록 지원하는 경량 오픈소스 프레임워크기존의 복잡한 Java EE 기반 개발의 단점을 보완하여 등장POJO(Plain Old Java Object) 프로그래밍과 의존성 주입(DI, Dependency Injection) 및 관점 지향 프로그래밍(AOP, Aspect-Oriented Programming) 같은 기능을 중심으로 설계됨1.2. Spring의 핵심 개념1.2.1. IoC (Inversion of Control)객체의 생성과 생명 주기를 개발자가 관리하지 않고, spring컨테이너가 관리주로 의존성 주입(DI) 으로 구현됨예 : `@Autowired` 를 통한 주입1.2.2. AOP (Aspect-Orient..

[Java] 명령형 , 선언형 프로그래밍

문제를 해결하기 위한 사고방식에 따라 명령형과 선언형으로 구분할 수 있다코드 작성 및 문제 접근 방식에서 차이를 보이며, 자바에서도 이를 활용한 다양한 프로그래밍 스타일을 구현할 수 있다 1. 명령형 프로그래밍특징어떻게(HOW) 문제를 해결할지 구체적으로 지시상태와 명령어를 중심으로 동작로직을 단계적으로 작성하며, 제어 구조(반복문, 조건문 등)를 사용하여 수행 과정을 정의특징적 요소변수 : 상태를 저장루프 : 반복작업수행조건문 : 논리 흐름 제어명령과 제어의 연속으로 문제를 해결함장점알고리즘 구현과 제어 흐름을 명확히 이해할 수 있음저수준 작업(메모리 관리, 상태 관리)에 적합단점코드가 길어지고 복잡해질 수 있음병렬 처리 및 함수 추상화가 어렵거나 번거로움예제리스트에서 짝수만 필터링하여 합산import..

BE/Java 2024.12.12

[Spring Boot] 어노테이션

@GetMapping : 메서드 레벨, GET 요청을 처리할 수 있다.@Controller : @GetMapping, @PostMapping, @PutMapping, @DeleteMapping 등을 사용할 수 있다.@ResponseBody : 메서드의 반환값을 응답 본문으로 사용@RestController : @Controller + @ResponseBody@Component : 스프링 IoC 컨테이너에 등록, new 로 생성할 필요가 없어진다.@Controller : 이것도 컴포넌트의 일종이다.@Service : @Component 과 동일@Repository : @Component 과 동일@Bean : 메서드 레벨, 스프링 IoC 컨테이너에 등록, new 로 생성할 필요가 없어진다.메서드로 빈을 등록..

[Java] 어노테이션

어노테이션은 메타데이터를 제공하는 특별한 형태의 문법주로 컴파일러 지시, 런타임 동작제어, 문서화 등에 사용된다 특징메타데이터 제공코드에 부가적인 정보를 포함하지만 프로그램의 로직에는 직접적인 영향을 미치지 않는다주석과는 다름주석은 개발자를 위한 설명일뿐이지만, 컴파일러나 런타임 환경에서 사용된다클래스, 메소드, 필드, 매개변수 등 다양한 위치에 적용 가능클래스, 메서드, 변수, 생성자, 매개변수, 패키지 선언 등 여러 곳에 사용할 수 있다기본문법`@`기호로 시작한다@AnnotationNamepublic class Main{}어노테이션 정의@interface 어노테이션이름 {}어노테이션 사용@어노테이션이름public class MyClass { // 클래스 내용}자바에서 제공하는 기본 어노테이션1...

BE/Java 2024.12.11

[Java] JDBC와 JPA

JDBCJDBC는 Java와 데이터베이스를 연결하는 기본적인 다리데이터베이스에 직접 연결해서 SQL 쿼리를 실행하고 데이터를 가져오거나 저장할 수 있게 해준다 특징 직접 SQL 사용: SQL 쿼리를 직접 작성해서 데이터베이스와 소통로우레벨 작업: 데이터베이스 연결, 쿼리 실행, 결과 처리 등을 개발자가 하나씩 직접 처리유연하지만 복잡: 모든 세부 작업을 수동으로 처리해야 하므로 복잡한 코드가 될 수 있음예제import java.sql.*;public class JdbcExample { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydb"; String user = "us..

BE/Java 2024.12.11

[Java] 스트림

1.  스트림스트림은 컬렉션이나 배열같은 데이터 소스를 처리하기 위한 강력하고 선언적인 방식이다데이터 처리 파이프라인을 만들도록 돕는 기능데이터 저장소가 아니라 데이터의 흐름원본데이터를 변경하지 않음선언형파이프라인 방식으로 연속적 작업을 연결 2. 핵심 구성 요소중간연산 : 스트림을 변환하는 작업 (filter, map, sorted 등)종결 연산 : 스트림을 소모하여 최종 결과를 반환 (forEach, collect, reduce 등) 3. 특징1회성 사용 : 한번 사용하면 재사용할 수 없다게으른 연산 : 중간 연산은 결과가 필요할때까지 실행되지 않는다병렬처리 지원 : parallelStream() 을 통해 병렬 처리가 가능하다 4. 장점코드 간결화병렬 처리함수형 스타일 5. 예제List words =..

BE/Java 2024.12.09

[Java] Map

키-값을 쌍으로 저장하고 관리하기 위한 인터페이스`Map`은 리스트나 배열처럼 순차적으로 값을 저장하지 않는다.1. 특징키-값을 쌍으로 저장`("name","alice")` 에서 name이 키, alice가 값이다키는 고유값(Unique)동일한 키를 중복해서 저장할 수 없다기존 키에 새 값을 넣으면 이전 값이 덮어씌워진다값은 중복 허용`("key1","value")`, `("key2","value")` 는 허용됨Null 허용 여부`HashMap`은 `null`키와 `null`값을 허용`TreeMap`은 `null`키 허용 x2. 주요 메서드데이터 추가/수정`put(key,value)`map.put("key","value");  데이터 조회`get(Object key)`주어진 키에 연결된 값을 반환Stri..

BE/Java 2024.12.07