본문 바로가기

반응형

전체

(119)
Spring Data JPA Illegal attempt to set lock mode for a native query Illegal attempt to set lock mode for a native query라는 예외가 발생하고 있습니다. 이는 Spring Data JPA에서 Native Query에 비관적 락을 적용할 수 없다는 의미입니다. 비관적 락을 사용하려면 JPQL을 사용해야 합니다.다음과 같이 @Query 어노테이션을 JPQL로 변경해 보세요TicketRepository 수정@Repository public interface TicketRepository extends JpaRepository { @Lock(LockModeType.PESSIMISTIC_WRITE) @Query("SELECT t FROM Ticket t WHERE t.id = :id") Optional findByIdWithLock(@P..
Spring 협업할때 들은 피드백들 엔티티, DTO 변수명 맞춰주세요어노테이션 import 신경써주세요@Transactional 어노테이션 어디는 jakarta, 어디는 spring 다르면 안돼요public, private 기본적인거 신경써주세요. 클래스 내부에서만 동작하는 메서드인데 왜 public 인가요어노테이션 순서 컨벤션 - 다른건 몰라도 레이어를 나타내는 어노테이션은 최상단으로 올려주세요. @Service, @Controller 등로컬환경에서 테스트 할 때 사용할 yml 파일을 따로 생성해주세요. application-local.yml 생성 후 run/debug configuration에서 active profiles : local 설정하고 실행하면 됩니다.RacingService.drawWinnders() 비동기 처리추첨에 시간..
Spring 끄적끄적(5) @Transactional , Stream @Transactional ( readOnly = true) 쓰면 장점@Transactional(readOnly = true)이 어노테이션이 붙은 메소드는 조회용 메소드라고 명시적으로 나타내주며 코드의 가독성을 높여준다JPA의 영속성 컨텍스트(Persistence Context)는 Entity 조회 시 초기 상태에 대한 Snapshot을 저장한다하지만 위 어노테이션을 붙여주면 JPA는 해당 트랜잭션 내에서 조회하는 Entity는 조회용임을 인지하고 변경 감지를 위한 Snapshot을 따로 보관하지 않으므로 메모리가 절약되는 성능상 이점이 있다List 를 Stream으로 작성해야 하는이유public List getPersonalityList() { List list = personalityT..
쿠키,세션,토큰,JWT 1. 쿠키(Cookie)개념: 쿠키는 웹 서버가 사용자의 웹 브라우저에 저장하는 작은 데이터 파일입니다.용도: 주로 사용자 식별, 세션 관리, 사용자 설정 유지 등에 사용됩니다.특징:클라이언트 측(브라우저)에 저장됨.만료 기간을 설정할 수 있음.HTTP 요청 시 자동으로 서버에 전송됨.저장 위치: 사용자의 웹 브라우저.2. 세션(Session)개념: 세션은 서버 측에서 사용자와의 상호작용을 지속적으로 유지하기 위한 데이터 저장소입니다.용도: 사용자 로그인 상태 유지, 사용자별 데이터 관리 등에 사용됩니다.특징:서버 측에 저장됨.세션 ID는 클라이언트의 쿠키에 저장됨.서버 메모리나 데이터베이스에 저장될 수 있음.저장 위치: 서버의 메모리 또는 데이터베이스.3. 토큰(Token)개념: 토큰은 인증 및 권한 ..
AMI(Amazon Machine Image) EC2는 특정 AMI를 선택해야지 작동합니다.역할/기능 OS선택개인화된 AMI 생성 관리 EC2는 끈다라는 표현을 쓰면 일시정지 또는 완전히 폐기끈다는 표현은 매우 위험하다그래서 정확히 표현하면 stop , terminationstop은 restart하면 예전 설정 그대로 간다. termination  후 재시작하면 설정을 처음부터 다시 해줘야 한다.내가 유지하고 싶은 서버의 상태를 이미지로 구워서 가지고 있는게 AMI  Graceful shutdown : 가급적이면 다운타임을 안 발생시키겠다.클라이언트가 에러를 보지 않게 shutdown EC2 인스턴스를 생성하면 저장공간인 EBS가 같이 생성된다 ( 약간 SSD 같은 느낌).물론 실제 SSD하나에 매핑되는게 아니다. 여러개의 EBS가 EC2에 붙을 수..
@NotNull vs @NotEmpty @PostMapping ("/quiz") //선착순퀴즈 수정 버튼@Operation (summary = "선착순퀴즈 이벤트 수정버튼")public QuizDTO updateQuiz(@Validated @RequestBody QuizDTO quizDTO) { return quizService.updateQuiz(quizDTO);}이런식으로 스프링 @Validated 를 썻는데public class QuizDTO { @NotEmpty private Long id; //기타등등}Swagger 를 이용해 API 테스트를 하니깐 id 값이 분명 비어있지 않음에도 계속 500을 반환하였다    왜일까 검색해보니깐 왜 Long 타입에는 @NotEmpty가 아닌 @NotNull을 사용해야 ..
@ModelAttribute vs @RequestBody Spring Boot에서 클라이언트와 서버 사이에서 JSON으로 데이터를 주고받기 위해서는 주로 @RequestBody를 사용합니다. @RequestBody는 HTTP 요청 본문(body)에 포함된 JSON 데이터를 Java 객체로 변환해주는 역할을 합니다. 반면 @ModelAttribute는 주로 폼 데이터나 쿼리 파라미터를 객체로 바인딩할 때 사용됩니다.@RequestBody와 @ModelAttribute의 차이@RequestBody용도: HTTP 요청 본문에 포함된 JSON, XML, 또는 다른 형식의 데이터를 Java 객체로 변환할 때 사용합니다.변환: HttpMessageConverter를 사용하여 요청 본문을 Java 객체로 변환합니다. 기본적으로 JSON 처리를 위해 MappingJackso..
CI/CD란 무엇인가 CI ( Continuous Integration) : 지속적 통합CD ( Continuous Delivery/Deployment) :  지속적 제공/배포 CI, 지속적 통합은 어플리케이션의 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 공유 레포지토리에 통합하는 것을 의미합니다.(가능하다면 하루에 여러번까지) CI는 언제 필요한가?다수의 개발자가 형상관리(Git,SVN) 툴을 공유하여 사용하는 환경MSA(Micro Service Archietecture) 환경CI의 핵심 목표는버그를 신속하게 찾아 해결하고소프트웨어의 품질을 개선하고새로운 업데이트의 검증 및 릴리즈의 시간을 단축시키는 것에 있다.  CD는 Continuous Delivery 혹은 Continuous Deployment 두 용어..

반응형