전체 글27 [MySQL]동시성 제어와 낙관적 락, 비관적 더보기회사 프로젝트 진행 중에 예약 시스템을 개발하게 되었다. 관리자에서 설정해놓은 숫자 만큼 예약이 되는 구조(선착순) 구조 였는데 서버가 이중화되어있어서 그런건지 예약 전에 Validation 비지니스 로직을 추가해도 밀리초까지 동일하게 들어오는 예약들의 오버부킹 현상이 발생했다. 동시성 제어를 위해 여러가지 시도해보았는데 결국 비관적 락으로 해결했는데. 공부한 내용을 적어보려고 한다. 동시성 제어를 위해 synchronized 와 데이터베이스(DB)의 락(비관적 락과 낙관적 락)의 활용, 각 방법의 장단점을 정리해보겠다.1. synchronized 이용장점Java 내부에서 제공하는 키워드로 사용이 간편.하나의 스레드만이 특정 자원에 접근 가능하게 하여, 데이터의 일관성을 유지단점멀티 프로세스 환경에.. 2024. 4. 25. [JPA] JPA의 요소 객체와 테이블 매핑 @Entity 테이블과 매핑할 클래스에 필수로 사용되는 어노테이션 name 속성을 이용하여 JPA에서 사용할 엔티티 이름을 지정한다. 설정하지 않으면 기본값이 클래스 이름으로 설정된다. 다른 패키지에 이름이 같은 엔티티 클래스가 있을 경우 이름을 지정하여 충돌을 피하여한다 기본 생성자는 필수, final 클래스, enum, interface, inner 클래스에는 사용하면 안 된다. @Table 엔티티와 매핑할 테이블을 지정(생략할 경우 매핑할 엔티티의 이름을 테이블 이름으로 사용된다.) name : 매핑할 테이블 이름(기본값 = 엔티티이름) catalog : catalog 기능이 있는 DB에서 catalog를 매핑 schema : schema 기능이 있는 DB에서 schema를 매핑.. 2024. 4. 21. [mybatis]could not set parameter No '?' on that position 에러 Mybatis를 사용하고 있는데 could not set parameter No '?' on that position 에러가 발생했다. 검색해보니 Mybatis 문법에 주석처리 하고 새로운 쿼리를 넣었는데 기존 주석 처리한 부분에 #{} 문법이 있었다. 그냥 Mybatis에 단순 텍스트만 있으면 /* */ 가 잘 먹는데 그 주석 안에 #{}가 있으면 위와 같은 오류가 난다. 2024. 4. 17. [JPA]영속성 컨텍스트 영속성 컨텍스트란? 영속성 컨텍스트란 '영구 저장 환경' 이다. Entity Manager 가 Entity를 저장하거나 조회하면 매니저는 영속성 컨텍스트에 Entity를 보관하고 관리한다. Entity Manager 가 persist()메소드를 사용하면 엔티티를 영속성 컨텍스트에 저장한다. 하나의 엔티티 매니저가 하나의 영속성 컨텍스트를 생성 및 접근 할 수 도 있고, 여러 엔티티 매니저가 하나의 영속성 컨텍스트를 공유할 수 도 있다. 엔티티의 생명주기 비영속(new/transient):영속성 컨텍스트와 관계가 없는 상태 영속(managed): 영속성 컨텍스트에 저장된 상태 준영속(detached):영속성 컨텍스트에 저장되어있다가 분리된 상태 삭제(removed):삭제된상태 영속성 컨텍스트의 특징 영속성.. 2024. 4. 17. 이전 1 2 3 4 ··· 7 다음