개발 공부/Spring 48

@Data 왜 지양해야할까여

# data 어노테이션- ToString Getter Setter EqualsAndHashCode RequiredArgsConstructor 을 모두 포함하는 강력한 어노테이션이다- @ToString : toString 메소드를 자동생성- @Getter : 모든 필드의 getter메소드 가 자동 생성- @Setter : 모든 필드의 setter 메소드가 자동 생성 - @EqualsAndHashCode : equals, hashCode 메서드 자동생성 - @RequiredArgsConstructor : final이나 @NonNull인 필드 값만 파라미터로 받는 생성자 자동생성.- 예를 들어 id의 필드가 변경을 허용치 않기로했다면 setter가 없어야한다. - 하지만 data를 사용하면 id필드도 세터..

RESTfulAPI

RESTful API 란두 컴퓨터 시스템이 인터넷을 통해 정보를 교환하기 위해 사용하는 인터페이스대부분의 비즈니스 애플리케이션은 다양한 Tastk를 수행하기 위해 다른 내부 애플리케이션 및 서드 파티 애플리케이션과 통신해야 한다.예를 들어 월간 급여 명세서를 생성 -> 인보이스 발행을 자동화하고 내부의 근무시간기록 앱과 통신하기 위해 내부 계정 시스템이 데이터를 고객의 뱅킹시스템과 공유해야한다. REST : 월드 와이으 뒙과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 떄문에 웹의 장점을 최대한 활용할 수있는 아키텍처 네트워크 상에서 클라이언트와 서버사이의 통신 방식중 하나 CRUD Operation HTTP ..

스프링 동작원리 및 멀티쓰레드 방식의 장단점

스프링 동작원리IoC(Inversion of Control):스프링의 핵심 개념 중 하나인 IoC 객체의 생명 주기와 의존성관리를 스프링 컨테이너가 관리한ㅂ니다보통 단일 스레드에서 동작하지만 여러 요청을 동시에 처리할 수 있는 멀티스레드 환경에서도 잘 작동한다.스레드 풀과 스레드 관리 :일반적으로 톰캣같은 컨테이너에서 실행된다스레드 풀을 사용하여 클라이언트 요청을 처리스레드 풀에서 스레드를 가져와 작업을 수행하고 작업이 완료되면 스레드를 반환트랜잭션관리:트랜잭션 관리도 지원을 하는데 여러 스레드 간에 데이터 일관성을 유지하게 도와줍니다멀티 스레드 환경에서 동시에 여러 트랜잭션이 발생할 경우 스프링은 각 트랜잭션을 독립적으로 관리하고 롤백 등의 작업을 처리한다멀티 스레드 방식의 장단점장점성능 향상 : 여러..

트랜잭션

트랜잭션(Transaction)은 데이터베이스 관리 시스템(DBMS)에서 여러 작업을 하나의 작업 단위로 묶어 처리하는 것을 의미합니다. 트랜잭션의 목적은 데이터베이스의 일관성과 무결성을 보장하는 것입니다. 트랜잭션은 성공적으로 완료되거나(커밋, commit) 실패할 경우 모든 작업이 취소(롤백, rollback)되어야 합니다.트랜잭션의 핵심 특성은 ACID(Atomicity, Consistency, Isolation, Durability)로 요약됩니다.ACID 속성원자성 (Atomicity)트랜잭션의 모든 연산이 성공적으로 완료되거나, 하나라도 실패하면 모든 연산이 취소되는 것을 보장합니다.예를 들어, 은행 계좌 이체 작업에서는 출금과 입금이 모두 성공해야 트랜잭션이 완료됩니다. 하나라도 실패하면 전체..

Spring ?

스프링 프레임워크(Spring Framework)를 사용하는 이유는 JPA(자바 퍼시스턴스 API) 때문만은 아닙니다. 스프링은 JPA 외에도 많은 기능과 이점을 제공하며, 다양한 이유로 많은 개발자들이 스프링을 선택합니다. 다음은 스프링을 사용하는 주요 이유들입니다.1. 의존성 주입(Dependency Injection)과 제어의 역전(Inversion of Control) 스프링의 핵심 개념 중 하나는 의존성 주입(DI)입니다. DI는 객체 간의 의존성을 스프링 컨테이너가 관리하도록 하여 코드의 결합도를 낮추고 테스트 용이성을 높입니다. 제어의 역전(IoC) 컨테이너를 통해 객체의 생성과 생명주기를 관리할 수 있습니다.2. 모듈화와 다양한 기능 스프링은 여러 모듈로 구성되어 있어 필요한 기능만..

JPA와 Mybatis차이

MyBatis와 JPA는 모두 자바 기반의 ORM(Object-Relational Mapping) 프레임워크입니다만, 각각의 특성과 차이점이 있습니다.MyBatisSQL 중심의 접근 방식MyBatis는 SQL 매핑 파일(XML)을 사용하여 SQL 쿼리를 정의하고, 자바 객체와 데이터베이스 테이블 간의 매핑을 설정합니다. SQL을 직접 작성하고 매핑 파일에 정의함으로써 데이터베이스와의 상호작용을 직접 제어할 수 있습니다.유연성과 직접적인 제어MyBatis는 개발자가 SQL을 직접 작성하고 세밀하게 제어할 수 있기 때문에, 복잡한 쿼리나 성능 최적화가 필요한 경우에 유리합니다.데이터베이스에 특화된 SQL 작업을 지원하며, 복잡한 조인이나 고급 데이터베이스 기능을 사용할 때 유용합니다.쿼리의 명시적인 정의각각..

JPA를 사용하는 이유

PA(Java Persistence API)는 자바 애플리케이션에서 관계형 데이터베이스를 다루기 위한 표준 API입니다. JPA를 사용하는 이유와 장점은 여러 가지가 있습니다. 다음은 JPA의 주요 장점과 그 이유입니다.1. 객체-관계 매핑(ORM) JPA는 객체-관계 매핑을 제공하여 객체지향 프로그래밍과 관계형 데이터베이스의 데이터를 매핑할 수 있게 합니다. 이를 통해 자바 객체와 데이터베이스 테이블 간의 변환을 자동으로 처리할 수 있습니다.2. 생산성 향상 JPA는 복잡한 SQL 쿼리를 직접 작성하지 않아도 되도록 도와줍니다. 데이터베이스 작업을 고수준의 API로 추상화하여 개발 생산성을 크게 향상시킵니다.3. 데이터베이스 독립성 JPA는 특정 데이터베이스에 종속되지 않습니다. JDBC 드..

Spring 컨테이너를 사용하면 장점이 무엇일까 ?

Spring 컨테이너를 사용하면 다양한 장점이 있습니다.Spring 컨테이너는 Spring Framework의 핵심 부분으로 , 애플리케이션의 구성 요소를 관리하고, 의존성을 주입하며, 애플리케이션의 전체 수명 주기를 관리합니다. 다음은 Spring 컨테이너를 사용할 때 얻을 수 있는 주요 장점들입니다.1. 의존성 주입 (Dependency Injection)- 느슨한 결합 : 컴포넌트 간의 결합도를 낮추어 코드의 유연성과 재사용성을 높인다.- 객체의 생성 및 의존성 주입을 컨테이너가 관리함으로써, 코드를 더 쉽게 유지보수하고 테스트할 수 있다.- 테스트 용이성: 객체(mock)를 쉽게 주입할 수 있어 단위 테스트 작성이 용이하다.2. AOP(Asepect-Oriented Programming)- 공통 ..

AppConfig - > Spring

appconfig에있는것 들을 스프링에서 관리해준다. AppConfig appConfig = new AppConfig(); MemberService memberService = appConfig.memberService();ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);appconfig에있는것 들을 스프링에서 관리해준다. package com.example.demo;import Discount.DiscountPolicy;import Discount.RateDiscountPolicy;import com.example.demo.order.OrderServic..