본문 바로가기

전체 글

(60)
DB Lock 이번 포스트를 보기 앞서 이전 포스트를 보고 오시기 바랍니다. https://jaystorage.tistory.com/29 Transaction의 Isolation Level이번 포스트를 보기 앞서 이전 포스트를 보고 오시기 바랍니다.https://jaystorage.tistory.com/28 DB TransactionTransaction 이란? 트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행jaystorage.tistory.com  DB Lock 이란? DB Lock이란 데이터베이스에서 동시성과 데이터 일관성을 보장하기 위해 사용되는 메커니즘을 의미한다. 이러한 DB Lock은 여러 트랜잭션이 동시에 데이터에 접근하더라도 데이터가 손상되거나 일관성이 깨지지 않도록 만들어준다.  참..
Transaction의 Isolation Level 이번 포스트를 보기 앞서 이전 포스트를 보고 오시기 바랍니다.https://jaystorage.tistory.com/28 DB TransactionTransaction 이란? 트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다. 트랜잭션의 특jaystorage.tistory.com  Isolation Level 이란? 트랜잭션의 격리 수준(Isolation Level)이란 여러 트랜잭션이 동시에 처리될 때, 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터에 접근할 수 있게 허용할지 여부를 결정하는 것을 의미한다.  이러한 Isolation Level 등장하게 된 이유는 다음과 같다. 트랜잭션의 ..
DB Transaction Transaction 이란? 트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다. 트랜잭션의 특징1) 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위이다.2) 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업단위이다.3) 하나의 트랜잭션은 Commit되거나 Rollback된다.   Transaction의 성질 트랜잭션은 ACID 원칙이라고 하는 성질을 가져야 한다.Atomicity(원자성)- 트랜잭션은 전부 수행되거나 전혀 수행되지 않아야 한다.Consistency(일관성)- 트랜잭션이 완료되면 데이터베이스는 일관된 상태를 유지해..
@Transactional 동작 방식 이번 포스트를 보기 앞서 이전 포스트를 보고 오시기 바랍니다.https://jaystorage.tistory.com/25 AOP와 Spring AOPAOP (Aspect Oriented Programming)란 AOP는 관점 지향 프로그래밍을 의미한다. 처음 이 단어를 접하면 객체지향(OOP), 절차지향(PP)과 완전히 다른 새로운 개념인지 의문이 들 수 있으나 AOP는 기본적으로 OOPjaystorage.tistory.com  @Transactional 이란? @Transactional 어노테이션은 Spring에서 제공하는 어노테이션으로 메소드나 클래스에 적용하여 트랜잭션 경계를 지정할 수 있게 만든다. @Transactional 어노테이션을 사용하면 해당 메소드나 클래스의 메소드 실행이 트랜잭션 경계..
JDK Dynamic Proxy vs CGLIB Proxy 이번 포스트를 보기 앞서 이전 포스트를 보고 오시기 바랍니다.  https://jaystorage.tistory.com/25 AOP와 Spring AOPAOP (Aspect Oriented Programming)란 AOP는 관점 지향 프로그래밍을 의미한다. 처음 이 단어를 접하면 객체지향(OOP), 절차지향(PP)과 완전히 다른 새로운 개념인지 의문이 들 수 있으나 AOP는 기본적으로 OOPjaystorage.tistory.com Proxy 패턴 프록시 패턴은 대상 원본 객체를 대리하여 대신 처리하게 함으로써 로직의 흐름을 제어하는 행동 패턴이다. 프록시(Proxy)의 사전적인 의미는 '대리인'이라는 뜻이다. 즉, 누군가에게 어떤 일을 대신 시키는 것을 의미하는데, 이를 객체 지향 프로그래밍에 접목해보면..
AOP와 Spring AOP AOP (Aspect Oriented Programming)란 AOP는 관점 지향 프로그래밍을 의미한다. 처음 이 단어를 접하면 객체지향(OOP), 절차지향(PP)과 완전히 다른 새로운 개념인지 의문이 들 수 있으나 AOP는 기본적으로 OOP 환경에서만 의미있는 개념이다. 다시 말해 AOP는 OOP를 보완하는 프로그래밍 기법이라고 할 수 있다.이런 AOP에 대한 정의는 각 기업이나 사이트마다 조금씩 다른데 가장 대표적인 정의는 다음과 같다. AOP는 횡단 관심사(cross-cutting concern)의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임이다. 하지만 위 내용만으로는 AOP가 구체적으로 어떤 것인지 와닿지 않는다. AOP를 보다 자세히 이해하려면 다음과 같은 개념을 알..
동일성(identity)과 동등성(equality) 동일성과 동등성의 원활한 설명을 위해 아래와 같은 클래스가 있다고 가정한다. class User { private int userId; private String email; public User(int userId, String email) { this.userId = userId; this.email = email; }}  동일성(identity) 이란 동일성은 두 객체가 동일한 메모리 주소를 가리키는지를 의미한다. Java에서는 == 연산자를 사용하여 동일성을 비교한다.User user1 = new User(1, “test@test.com”);User user2 = user1;System.out.println(user1 == user2); // out..
깊은 복사(Deep Copy)와 얕은 복사(Shallow Copy) 얕은 복사(Shallow Copy) 란 다음과 같은 Java 코드를 보자int[] arr1 = {1,2,3};int[] arr2 = arr1; arr2[0] = 10;System.out.println(arr1[0]); // output : 10System.out.println(arr2[0]); // output : 10arr1[1] = 9;System.out.println(arr1[1]); // output : 9System.out.println(arr2[1]); // output : 9 위 코드에서는 분명 arr2의 0번째 데이터를 10으로 변경했는데 arr2만 아니라 arr1의 0번째 데이터도 10으로 변경된 것을 볼 수 있다. 또한 arr1의 1번째 데이터를 9로 변경했는데 arr2의 1번..