Database

Programming/Database

[DB,Transaction] Transaction 과 Lock

트랜잭션이란. 데이터베이스의 데이터를 조작하는 작업의 단위. 트랜잭션은 이론적으로 ACID 원칙을 보장해야 한다. Atomicity (원자성) : 트랜잭션의 부분 작업만 성공할 순 없다. 전체가 성공하거나, 전체가 실패해야 한다. Consistency (일관성) : 트랜잭션이 성공하면 언제나 일관성이 있는 데이터베이스 상태를 유지하는 것을 의미. 만약 모든 계좌는 잔고가 있어야 한다면, 이를 위반하는 트랜잭션은 중단된다. Isolation (독립성) : 하나의 트랜잭션이 실행되고 있을 때, 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미한다. Durability (지속성) : 성공적으로 수행된 트랜잭션은 영원이 반영되어야 한다. 모든 트랜잭션은 로그로 남고, 시스템 장애 발생 전으로 되..

Programming/Java

[JPA , Hibernate] Add Prefixed Table Name

JPA와 Hibernate를 사용하고 있는 개발자라면 hibernate ddl option에 의해 엔티티 클래스가 데이터베이스에 테이블로 자동으로 생성되는 것을 알고 있을 것이다. 이때 테이블명은 여러 전략에 의해 정해지는데 기본적으로는 엔티티 클래스명을 따르고 소문자에 언더바를 넣는 전략을 선택한다. @Entity public class UserHistory{ @Id @GenerateValue(strategy = GenerationType.IDENTITY) private Long id; // ..... 기타 등등 } 위와 같이 엔티티 클래스를 작성했을 때 특별한 설정이 없었다면, Hibernate는 다음과 같은 이름으로 테이블을 생성한다. CREATE TABLE user_history ( id BIGI..

Programming/Database

[Mysql] 버전 문자열 비교 및 숫자 변환

어제 회사에서 앱을 스토어에 배포하고, 버전업을 테스트하는 과정에서 서버가 버전을 제대로 비교하지 못하는 이슈가 있었다. app 버전 정보를 저장하는 DB TABLE은 다음과 같다. [ app ] app_id package_name version_name created_at 1 'com.test.mobile' '1.0.0' 2019-03-06 1:00:10.000000 2 'com.test.mobile' '1.0.1' 2019-03-07 1:00:10.000000 3 'com.test.mobile' '1.0.5' 2019-03-08 1:00:10.000000 SELECT * FROM app WHERE package_name = {target_package_name} ORDER BY version_name..

JohnMark
'Database' 태그의 글 목록