
CQN 문자열 파싱 그만 — CqnAnalyzer로 안전 분석 #shorts #SAP #CAPJava
이 글에서 다루는 내용 CAP for Java 이벤트 핸들러를 작성하다 보면 "지금 들어온 요청이 어떤 엔티티를, 어떤 키로, 어떤 조건으로 조회하는가"를 알아야 하는 순간이 반드시 옵니다. 이때 cqn.toString() 결과를 문자열로 잘라 쓰는 코드는 당장은 동작해도 확장 시 반드

이 글에서 다루는 내용 CAP for Java 이벤트 핸들러를 작성하다 보면 "지금 들어온 요청이 어떤 엔티티를, 어떤 키로, 어떤 조건으로 조회하는가"를 알아야 하는 순간이 반드시 옵니다. 이때 cqn.toString() 결과를 문자열로 잘라 쓰는 코드는 당장은 동작해도 확장 시 반드

개요: 왜 모든 오류가 500으로 나가는가 CAP Java로 서비스를 개발하다 보면, 핸들러 안에서 발생한 예외가 아무 처리 없이 그대로 올라가 클라이언트에게 500 Internal Server Error 로 반환되는 상황을 자주 만납니다. 재고 부족처럼 명백한 "업무 오류"조차 500

📖 개요: CAP Java 트랜잭션 롤백, 왜 자꾸 어긋나는가 SAP CAP(Cloud Application Programming Model) for Java는 개발자가 트랜잭션 경계를 직접 열고 닫지 않아도 되도록 ChangeSet 컨텍스트 라는 추상화를 제공합니다. 편리하지만, 이

📖 개요 및 이 글에서 다루는 것 CAP Java 애플리케이션이 자기 데이터베이스만 바라보는 경우는 드뭅니다. 실무에서는 S/4HANA의 OData API나 다른 팀이 만든 마이크로서비스를 호출해 데이터를 합쳐 보여줘야 하는 상황이 훨씬 많습니다. 이 글에서는 CAP Java의 Rem

📖 개요: Before와 After, 이름만 보고 쓰면 반드시 사고가 난다 CAP Java에서 커스텀 핸들러를 처음 작성할 때 가장 많이 겪는 사고는 문법 오류가 아니라 "코드는 정상 실행됐는데 DB에는 아무 것도 반영되지 않는" 침묵의 버그 입니다. 특히 @After 핸들러에서 엔티
개요 — 핸들러 실행 순서를 알아야 하는 이유 CAP Java(SAP Cloud Application Programming Model, Java 런타임)에서 커스텀 비즈니스 로직은 @Before , @On , @After 세 페이즈(Phase)의 이벤트 핸들러로 작성합니다. 이 세 페이

개요: 핸들러 실행 순서를 알아야 하는 이유 CAP Java(SAP Cloud Application Programming Model, Java 런타임)에서 커스텀 로직은 @Before , @On , @After 세 가지 페이즈(Phase)의 이벤트 핸들러로 작성합니다. 문제는 이 세 페
1. 왜 런타임 선택이 CAP 프로젝트의 첫 번째 관문인가 SAP Cloud Application Programming Model(CAP)은 하나의 프레임워크지만, 실제 서비스를 구현하는 런타임은 Java와 Node.js 두 가지로 나뉩니다. CDS(Core Data Services)

개요 및 이 글에서 다루는 내용 CAP for Java(SAP Cloud Application Programming Model for Java)는 기본적으로 모든 비즈니스 로직을 트랜잭션 컨텍스트 안에서 실행합니다. 문제는 단순히 상품 카탈로그를 조회하거나 주문 내역을 검색하는 읽기 전

PersistenceService란 무엇인가 PersistenceService 는 CAP for Java 런타임이 제공하는 영속성 추상화 계층입니다. 패키지 com.sap.cds.services.persistence.PersistenceService 에 정의되어 있으며, CDS 엔터티

PersistenceService란? CAP for Java에서 PersistenceService 는 데이터베이스에 직접 접근할 수 있는 타입 안전 영속성 API입니다. 일반적인 CqnService와 달리 이벤트 핸들러를 우회해 DB에 바로 쿼리를 실행합니다. 주로 커스텀 핸들러 내부에

외부 서비스가 죽으면? CAP Java에서 외부 REST API를 호출할 때 해당 서비스가 응답하지 않으면 스레드가 블로킹되고, 요청이 쌓여 결국 전체 서비스가 다운 됩니다. Circuit Breaker는 이 장애 전파를 막는 패턴입니다. Resilience4j 3가지 상태 Closed

이 글이 답하는 질문 CAP for Java에서 역할(Role) 기반 접근 제어를 어떻게 선언하나요? @AuthorizedRole과 @PreAuthorize 중 어떤 걸 써야 하나요? 로컬에서 권한 테스트는 어떻게 하나요? 직접 해보기 1. CDS에서 Role 선언 CDS 서비스 정의에

이 글이 답하는 질문 CAP for Java에서 Custom Action을 어떻게 정의하나? Java Handler를 @On으로 연결하는 정확한 방법은? Action 구현 시 자주 하는 실수는? 직접 해보기 1. service.cds에 Action 정의 // srv/my-service.
Custom Action이란? CAP CDS에서 action 은 데이터 조회·수정 외의 비즈니스 로직을 명시적으로 노출하는 방법입니다. REST로 치면 POST /approve 같은 비표준 동작을 OData 서비스에 추가할 때 사용합니다. CDS 정의 service OrderServic

Custom Action이 필요한 순간 CAP for Java에서 표준 CRUD만으로는 부족할 때 Custom Action을 사용합니다. 주문 승인, 결제 처리, 외부 시스템 호출처럼 특정 비즈니스 로직을 전용 API 엔드포인트로 노출할 수 있습니다. CDS 모델에서 Action 선언
인증 빼먹으면 API가 그대로 노출됩니다 CAP for Java 앱을 BTP에 배포할 때 XSUAA 바인딩과 JWT 검증을 누락하면, 인증 없는 엔드포인트가 외부에 그대로 노출될 수 있습니다. 특히 @cds.requires: 'authenticated-user' 선언을 빠뜨리면 Serv
이 글이 답하는 질문 CAP for Java에서 주기적인 배치 작업을 어떻게 구현하나요? @Scheduled 어노테이션 하나로 cron을 직접 구현하지 않아도 되나요? Spring의 @Scheduled을 CAP 서비스에서 바로 쓸 수 있나요? 직접 해보기 1. 의존성 확인 — Sprin

이 글이 답하는 질문 CAP Java에서 무거운 작업을 비동기로 처리하려면? @Async 를 붙이기만 하면 되는가? 비동기 메서드가 작동하지 않는 이유는 무엇인가? @Async란 Spring Boot에서 메서드에 @Async 를 붙이면 해당 메서드가 별도 스레드에서 실행된다. 이메일 발

@Value란? CAP for Java는 Spring Boot 기반이므로 @Value 어노테이션을 그대로 사용할 수 있습니다. application.yaml 에 정의된 설정값을 Java 필드 한 줄로 바로 주입합니다. 설정 파일 작성 # application.yaml myapp: end