Spring 23

[Spring] 예외처리 - throw, throws

throw : 예외를 발생시키는것. 예외 객체를 생성해서 즉시 던진다. throws :자신을 호출한 상위 메서드로 에러를 던짐. 오류를 처리하지않고 디바이드 메서드를 호출한 쪽에게 오류를 처리하라고 떠넘길 수 있음. catch 블록에서 매칭 : 더 구체적인 타입을 먼저 매칭 NullPointerException : RuntimeException의 하위 클래스.RuntimeException : Exception의 하위 클래스.>> NullPointerException을 먼저 잡음. public static void main(String[] args) { int sum = 0; try { func(); } catch (NullPointerException e) { ..

Spring/예외처리 2025.04.10

트리 구조 DTO

https://dojjong.tistory.com/10 부모-자식관계 트리구조 만들기부서를 구현하고 싶을때, 3단계 까지 들어가는 부서가 있다고 치면 예를 들어 ○○실-□□부-△△팀 의 형식이라 해당하는 부서를 컬럼으로 따로 구분했었습니다. 기존에 이미 서비스중인 시스dojjong.tistory.com 데이터는 플랫하게 가져와서  converter내에서 처리Map dtoMap = new HashMap();List roots = new ArrayList();for (Category c : categories) { dtoMap.put(c.getId(), new CategoryTreeDto(c.getId(), c.getName()));}for (Category c : categories) { Cat..

@HttpServletRequest

https://velog.io/@oliviarla/HttpServletRequest-HttpServletResponse-%EA%B0%9D%EC%B2%B4%EB%9E%80 WAS는 HttpServletRequest 객체를 생성하여 저장응답을 보낼 때 사용하기 위해 HttpServletResponse 객체 생성\-> Servlet에게 두 객체 전달\-> doGet, doPost, S" data-og-host="velog.io" data-og-source-url="https://velog.io/@oliviarla/HttpServletRequest-HttpServletResponse-%EA%B0%9D%EC%B2%B4%EB%9E%80" data-og-url="https://velog.io/@oliviarla/Ht..

Spring/Security 2025.03.24

[JPA] Spring Data JPA의 findById

https://akira6036.tistory.com/62 Spring Data JPA에서의 Transaction 및 수정 작업오늘의 주제는 다음과 같다. 다음 문장을 읽고 바로 그 질문에 대한 해답이 떠오른다면 본 게시글을 굳이 읽지 않아도 될 것이다. "Spring Data JPA에서, Service나 Repository 계층에 트랜잭션(Transaction)을akira6036.tistory.com일반적으로 Spring Data JPA의 findById 같은 리포지토리 메서드는 기본적으로 읽기 전용 트랜잭션 안에서 실행ehla.메서드 호출 시점: 리포지토리 메서드(findById)가 호출되면 스프링이 내부적으로 읽기 전용 트랜잭션을 시작하여 데이터베이스에서 해당 엔티티를 조회.메서드 종료 시점: 조..

Spring/트랜잭션 2025.02.06

@Transactional

✏️  Spring AOP프록시 패턴: 어떤 객체를 사용하고자 할 때 해당 객체를 대리(proxy)하는 객체를 통해 접근하는 방식.  [Spring] AOP와 @Transactional의 동작 원리오늘은 @Transactional의 동작 원리를 AOP와 함께 좀 더 자세하게 조사해보려고 한다.여기서 다루는 내용은 다음과 같다.AOP란 무엇이며 왜 사용하는가Spring AOP는 왜 프록시를 사용하는가@Transactional은velog.iotarget에 대한 호출이 들어오면 AOP proxy가 이를 가로채서(intercept) 가져온다.AOP proxy에서 Transaction Advisor가 commit 또는 rollback 등의 트랜잭션 처리를 한다.트랜잭션 처리 외에 다른 부가 기능이 있을 경우 해당..

Spring/트랜잭션 2025.02.06

org.hibernate.ObjectDeletedException: deleted instance passed to merge:

"deleted instance passed to merge" 오류는 삭제된 엔티티를 merge()에 전달하여 발생 해결 방안 삭제된 엔티티는 재사용하지 않도록 함.필요한 경우 새로운 인스턴스를 생성트랜잭션 및 비즈니스 로직을 재검토하여 삭제와 업데이트 작업이 충돌하지 않도록 해야 한다.삭제된 엔티티를 merge()에 전달엔티티가 한 번 삭제되면, 그 엔티티는 더 이상 영속성 컨텍스트에 속하지 않고, DB에서도 삭제된 상태가 됨.이 상태의 엔티티를 merge()로 병합하려고 하면 Hibernate는 "이미 삭제된 객체를 merge하려고 한다"고 판단하여예외를 발생시킴.  * em.remove(user)를 호출하면 user는 영속성 컨텍스트에서 제거된다.(Object is already marked for..

Spring/트랜잭션 2025.02.05

[Spring] OAuth2 인증 용어

Resource Owner - 사용자 - Google 서비스(Resource) 를 로그인 해서 사용하는 Owner- 서비스 이용 사용자 Client - 애플리케이션 - 어떤 서비스를 이용하고자 하는 쪽. - 보호된 Resource 에 액서스하는 애플리케이션.  Resource Server - 서버- Client 요청을 수락하고, Resource Owner에게 해당하는 Resource 를 제공하는 서버- 특정 애플리케이션Client가 사용자Resource Owner의 Resource를 가져올 때,    그 Resource 를 제공하는 애플리케이션 Authorization Server - 서버- OAuth2 인증 처리 흐름에서 Client 가 Resource Server에 접근할 수 있는 권한을 부여하는 서..

Spring/Security 2024.07.10

[Spring] Security - JWT 토큰 인증

JWT 시그니처에는 헤더와 페이로드를 합친 문자열을 서명한 값이 들어 있다. 서명은 헤더의 알고리즘과 secret key 를 이용해 생성. Base64 URL - safe 로 인코딩한다. secret key 를 포함해서 암호화가 되어있다. ☘️ 사전 작업 1. 1 :  보안 구성 클래스 @Configuration SecurityFilterChain : 최소한의 보안 구성. passWordEncoder. : passwordEncoder Bean 객체 생성. corsConfigurationSource : Cors 정책 적용.setAllowedOrigins() : 모든 출처(Origin) 에 대해 HTTP 통신을 허용하도록 함. setAlloweddMethods () : 파라미터로 지정한 HTTP Metho..

Spring/Security 2024.07.09

[Spring] abstract, 인터페이스 VS 추상클래스, @EntityListeners

📚 문제상황spring JPA 구현을 하다가, 계속해서 같은 내용의 createdAt, modifiedAt 을 쓰고 있음. 합칠 수는 없을까? 💡인터페이스 VS 추상클래스 사용. ☕ 인터페이스 vs 추상클래스 용도 차이점 - 완벽 이해인터페이스 vs 추상클래스 비교 이 글을 찾아보는 독자분들은 아마도 이미 인터페이스와 추상클래스 개념을 학습한 뒤에 이 둘에 대하여 차이의 모호함 때문에 방문 했겠지만, 그래도 다시한번inpa.tistory.com - 똑같이 추상 메서드를 통해 상속, 구현을 함으로써 메서드 강제 구현 규칙을 가지는 추상화 클래스. 인터페이스: implements 인터페이스에 정의된 메서드를 각 클래스의 목적에 맞게 기능을 구현.추상 클래스: extends 자신의 기능들을 하위 클래스로 ..