java9 [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. [JPA]영속성 컨텍스트 영속성 컨텍스트란? 영속성 컨텍스트란 '영구 저장 환경' 이다. Entity Manager 가 Entity를 저장하거나 조회하면 매니저는 영속성 컨텍스트에 Entity를 보관하고 관리한다. Entity Manager 가 persist()메소드를 사용하면 엔티티를 영속성 컨텍스트에 저장한다. 하나의 엔티티 매니저가 하나의 영속성 컨텍스트를 생성 및 접근 할 수 도 있고, 여러 엔티티 매니저가 하나의 영속성 컨텍스트를 공유할 수 도 있다. 엔티티의 생명주기 비영속(new/transient):영속성 컨텍스트와 관계가 없는 상태 영속(managed): 영속성 컨텍스트에 저장된 상태 준영속(detached):영속성 컨텍스트에 저장되어있다가 분리된 상태 삭제(removed):삭제된상태 영속성 컨텍스트의 특징 영속성.. 2024. 4. 17. [JAVA] 백준 알고리즘 1110 더하기 사이클 문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다. 위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다. N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오. 입력 첫째 .. 2022. 6. 9. 이전 1 2 3 다음