728x90
반응형

Spring 23

Spring, DTO, DAO, BO, VO 차이점

Spring에서 Data를 전달하는 객체에는 대표적으로 DTO, VO가 있다, DTO와 VO는 용도가 전혀 다르다.  DTOData Transfer Object로 계층간 데이터를 전달하기 위한 객체이다.계층 사이에서 데이터를 전달하기 위해 DTO에 데이터를 담아 서로 주고 받는다.DTO는 순수하게 데이터 전달만을 위한 객체이다.순수한 데이터 객체로 비즈니스로직을 갖지 않는다.오직 getter/setter 메서드만 갖는다 Controller에서 Service로 데이터를 전달할 때,여러개의 데이터를 하나의 DTO로 묶어 전달하면 유지보수도 쉽고 코드 가독성과 재사용성이 증가한다. VOValue Object로 값 그 자체를 표현하는 객체이다.VO는 객체의 참조값이 다르더라도 값이 같다면 동일한 것으로 봐야한다..

Spring 2025.04.01

Spring, Pageable/List 기본 정렬 기준

기술 면접에서 자주 물어보는 부분PageableSpring Data JPA 에서 Pageable을 사용하여 정렬을 지정하지 않으면 기본적으로는 기본키(primary key)를 기준으로 정렬한다. Pageable에서 정렬을 지정하지 않으면 기본 키(@Id) 오름차순으로 정렬될 가능성이 크다. 하지만 데이터베이스 내부 동작 방식에 따라 저장된 순서대로 보이지 않을 수도 있다.정확한 정렬을 보장하려면 Sort를 사용하여 명확히 정렬 조건을 지정하는 것이 좋다.  기본 키(@Id) 기준으로 정렬@Id가 있는 필드(예: report_id)의 오름차순(ASC) 정렬이 기본값@GeneratedValue를 사용하는 경우, 자동 증가되는 순서대로 반환인덱스(Index)가 있는 경우인덱스가 걸려 있는 컬럼이 있다면, 데이..

Spring 2025.03.18

Spring, Service 자주 사용하는 어노테이션 정리

@Service 해당 클래스가 Spring의 서비스 컴포넌트임을 나타낸다.비지니스 로직을 처리하는 역할@Component의 확장 개념으로, 자동으로 Spring Bean으로 등록된다.  @RequiredArgsConstructor Lombok 제공 어노테이션final or @NonNull 이 붙은 필드를 자동으로 생성자 주입즉, @Autowired 없이 생성자 주입 방식으로 의존성 주입을 처리할 수 있다.  @Slf4j Lombok에서 제공하는 로깅 어노테이션log.info(), log.debug(), log.error() 등을 사용 할 수 있음로그 출력을 위해 LoggerFactory.getLogger(ClassName.class)를 직접 선언할 필요가 없다.  @Transactional Spring의..

Spring 2025.03.18

Spring, Lazy Loading 사용하는 방법 / 외래키로 연결된 테이블의 데이터 같이 가져오는 방법(JPA)

Lazy Loading Lazy Loading(지연 로딩)은 JPA에서 연관된 엔터티를 실제 사용할 때 로드하는 방식즉, 처음에는 프록시 객체만 생성해 두고, 해당 필드에 접근할 때 쿼리를 실행한다. Lazy Loading을 사용하려면 @ManyToOne, @OneToMany, @OneToOne, @ManyToMany 관계에서fetch = FetchType.LAZY 옵션을 설정하면 된다.(기본적으로 @ManyToOne과 @OneToOne은 FetchType.EAGER, @OneToMany와 @ManyToMany는 FetchType.LAZY입니다.) FetchType.LAZY 는 필요할 때만 조인 테이블을 조회하며, 기본 키는 바로 접근할 수 있어서 불필요한 조인을 피할 수 있다.▹ 조회되는 모든 행마다 ..

Spring 2025.03.18

Spring, Controller 어노테이션 정리

Controller에서 자주 사용하는 어노테이션@Tag(name = "리포트")@RequiredArgsConstructor@RequestMapping("/admin")@RestControllerpublic class CreditMonthlyReportController {}  @Tag(name = "리포트") 이 어노테이션은 Swagger API 문서화에서 사용되는 태그를 지정하는 데 사용된다."리포트"라는 이름으로 API를 그룹화하여, Swagger UI에서 API 문서를 더 깔끔하게 정리할 수 있다.  @RequiredArgsConstructor Lombok 라이브러리의 어노테이션으로, final이나 @NonNull이 붙은 필드를 자동으로 생성자에 주입하는 기능을 제공한다.이 어노테이션이 있으면, @..

Spring 2025.03.17

Spring, Entity 구조 정리 / JPA에서 자주 사용되는 어노테이션

JPA에서 자주 사용되는 어노테이션@Builder@Getter@AllArgsConstructor@NoArgsConstructor(access = AccessLevel.PROTECTED)@Table(name = "report_monthly", indexes = { @Index(name = "unq__report", columnList = "credit_id, the_day", unique = true), @Index(name = "idx__report_account", columnList = "account_id", unique = false)})@Entity@EntityListeners(AuditingEntityListener.class)public class CreditMonthlyReportEnt..

Spring 2025.03.17

Spring, Entity와 DTO의 차이점 및 구조 파악 / 변환 방법

Entity와 DTO의 차이점Entity기본 설정테이블 이름인덱스 설정기본키NOT NULL컬럼명컬럼 데이터 타입/제약조건데이터 타입 설정데이터 타입 사이즈 설정DEFAULT 값 설정DTOEntity와 DTO 변환Setter / Builder 사용 방식ModelMapper 라이브러리 사용 방식   Entity와 DTO의 차이점Entity는 데이터베이스와 매핑되어 데이터의 상태를 관리하는 객체이며, ORM을 통해 데이터베이스의 CRUD 작업을 처리한다.즉, Entity는 생성하고 서버를 실행시키면 데이터베이스에 자동으로 테이블이 생성, 수정, 삭제, 읽기가 된다. 그에 비해 DTO는 계층 간 데이터 전송을 위한 객체로 클라이언트에게 필요한 정보만 전송한다.DTO는 비즈니스 로직을 포함하지 않으며 엔티티의 정..

Spring 2025.03.13

Spring, Spring Boot 기본 구조

Spring Boot 기본 구조 your-project/│├── src/│ ├── main/│ │ ├── java/│ │ │ └── com/│ │ │ └── example/│ │ │ └── yourproject/│ │ │ ├── YourProjectApplication.java    👀 Gradle 기본 설정보통 MVNRepository 사이트에서 필요한 의존성 검색해서 가져오면 된다.https://mvnrepository.com/   ✔️ Spring Boot 기본 의존성 dependencies { implementation 'org.springframework.boot:spring-boot-start..

Spring 2025.03.13

Spring Boot, Spring Security란?

목차Spring Security주요 개념기본 설정authorizeHttprequest()Header()cors()sessionManagment()csrf()formLogin()httpBasic()addFilter()addFilterAfter()apply()      Spring SecuritySpring 기반의 어플리케이션의 보안(인증과 권한)을 담당하는 프레임워크인증, 인가 기능을 표준화하고 자동화 할 수 있어 개발자가 보안 관련 코드를 직접 작성하지 않고도 높은 수준의 보안 기능을 쉽게 구현할 수 있다.Spring Security 주요 아키텍처 Web ContextJava Spring ContextClient HTTP RequestFilterDispatcherServletController 1/log..

Spring 2025.03.12

Spring Boot, Delete 메서드 구현 (@DeleteMapping)

DELETE API웹 애플리케이션 서버를 거쳐 데이터베이스 등의 저장소에 있는 리소스를 삭제할 때 사용.서버에서 클라이언트로부터 리소스를 식별할 수 있는 값을 받아 데이터베이스나 캐시에 있는 리소스를 조회하고 삭제하는 역할.컨트롤러를 통해 값을 받는 단계에서는 간단한 값을 받기 때문에, GET 메서드와 같이 URL에 값을 넣어 요청을 받는 형식으로 구현됨. @PathVariable을 이용한 DELETE 메서드 구현@DeleteMapping("/{adId}")public String deleteVariable(@PathVariable String adId) { return adId}  @RequestParam을 이용한 DELETE 메서드 구현@DeleteMapping(value = "/adEmail")pu..

Spring 2025.02.25
728x90
반응형