반응형 Back-End/Spring Boot36 @Component, Controller, @Service, @Repository 차이점 각각의 클래스를 특정 역할을 수행하는 Spring Bean으로 등록할 때 사용된다. 각 애너테이션은 클래스가 어떤 역할을 하는지를 명시적으로 나타내며, Spring의 @ComponentScan 기능을 통해 자동으로 Bean으로 등록된다. 모두 내부적으로 @Component 어노테이션을 사용하고 있특징과 용도@Component는 가장 일반적인 형태의 어노테이션으로, 특정 역할에 종속되지 않는 일반적인 Spring Bean을 나타낸다. 공통 기능을 제공하는 유틸리티 클래스나, 특정 계층에 속하지 않는 일반적인 컴포넌트를 정의할 때 사용된다.@Service는 비즈니스 로직을 수행하는 클래스에 사용되며 서비스 레이어의 Bean을 나타낸다.@Controller는 Spring MVC에서 웹 요청을 처리하는 컨트롤러.. 2025. 3. 17. Spring Event Publisher/Listener // 이벤트 객체public class PaymentSuccessEvent { private final String orderKey; private final String paymentKey; public PaymentSuccessEvent(String orderKey, String paymentKey) { this.orderKey = orderKey; this.paymentKey = paymentKey; } public String getOrderKey() { return orderKey; } public String getPaymentKey() { return paymentKey; }}// 이벤트 발행서비스@.. 2024. 8. 9. 트랜잭션 전파 ≣ 목차//// Source code recreated from a .class file by IntelliJ IDEA// (powered by FernFlower decompiler)//package org.springframework.transaction.annotation;public enum Propagation { REQUIRED(0), SUPPORTS(1), MANDATORY(2), REQUIRES_NEW(3), NOT_SUPPORTED(4), NEVER(5), NESTED(6); private final int value; private Propagation(int value) { this.value = value; } .. 2024. 7. 26. @Transactional ≣ 목차 스프링의 AOP 를 통해 @Transactional 어노테이션을 사용해서 트랜잭션을 걸 수 있다.조회용 메서드에 @Transactional(readOnly = true) 속성을 설정하면 성능상 이점을 얻을 수 있다. + Lazy Loading, Replication 과 같이 트랜잭션 범위 내에서 수행해야 되는 동작이 있는 경우에 적절하게 활용하는 것이 좋으며, 무분별하게 사용할 경우 Snapshot 유지, Flush 의 필요 등 관리적/메모리적 측면에서 좋지 않을 수 있고, 커넥션을 오래 가지고 있어서 커넥션 부족 등의 문제가 발생할 수 있음을 유의한다. readOnly = trueJPA - Session Flush Mode Setting스프링 프레임워크가 JPA 의 세션 플러시 모드를 'MAN.. 2024. 7. 15. Spring Controller header 값 가져오기 @RequestHeader(""): "" 내부에 있는 헤더명으로 헤더 값을 받아오도록 설정할 수 있다.HttpServletRequest 객체: 객체를 파라미터로 받아와 getHeader 메서드를 통해 헤더 값을 가져올 수 있다.import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestHeader;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.Ht.. 2024. 7. 10. 데이터베이스 decimal 타입 JPA 에서 표현하기 Double 등의 타입을 사용할 수 있지만, 부동 소수점 연산의 정밀도 문제로 인해 BigDecimal 이 더 안전되게 사용된다.BigDecimal@Entitypublic class EntityClass { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(precision = 10, scale = 2) private BigDecimal decimalField;} @DecimalMin, @DecimalMax0.00 ~ 99999.99 사이의 값을 가질 수 있도록 제한할 수 있다.@Entitypublic class EntityClass { @Id @GeneratedValue(.. 2024. 7. 9. @UniqueConstraint 와 @Colume 의 unique 속성 차이 둘다 JPA 에서 Unique Key 를 정의하는 데 사용되는 애노테이션이다. @UniqueConstraint@Table 내에서 사용된다. 테이블 수준에서 UK 를 정의할 수 있다.여러 개의 필드나 필드의 조합을 통해 UK 를 설정할 수 있다.@Entity@Table(name = "entity_table", uniqueConstraints = { @UniqueConstraint(name = "uk_constraint_name", columnNames = {"column1", "column2"})})public class EntityClass { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @C.. 2024. 7. 9. JPA 적용 및 API 기능 추가하기 ≣ 목차 코드에 정답이 있는 건 아니지만 최대한 클린 코드 하려고 노력해보았다!JPA 공부 후 적용해보기 :)1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481.. 2024. 5. 29. JPA를 사용하는 이유 JDBC -> JDBC Templates -> JPA 반복 코드 감소 SQL쿼리 자동 처리 JPA 기술을 사용하면 SQL 쿼리를 JPA가 자동으로 처리해줌으로써 개발 생산을 크게 높일 수 있다. SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환할 수가 있다. (SQL < 객체 중심으로 고민 가능) 2024. 4. 16. 이전 1 2 3 4 다음 728x90 반응형