전체 글 (50) 썸네일형 리스트형 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번.. String / StringBuilder / StringBuffer 이번 포스트를 보기 앞서 이전 포스트를 보고 오시기 바랍니다.https://jaystorage.tistory.com/20 String과 String Constant Pool들어가기 앞서 String을 보다 자세히 이해하기 위해서는 JVM 구조를 알고 있는 것이 좋다. JVM에 대한 자세한 내용을 알고 싶다면 https://jaystorage.tistory.com/8 을 참고하자 String 이란 Java에서 String은 문jaystorage.tistory.com String 과 StringBuilder, StringBuffer 의 차이점 String과 (StringBuilder, StringBuffer)는 문자열을 다루는 클래스라는 점에서 공통점을 가지고 있지만 String은 불변성(immutable.. BigDecimal BigDecimal 이란 BigDecimal은 Java에서 고정 소수점 연산을 정확하게 수행하기 위해 사용되는 클래스를 의미한다. double이나 float과 같은 부동 소수점 타입은 매우 큰 숫자나 매우 작은 숫자를 처리할 수 있지만 정확도가 떨어질 수 있다. 이러한 이유로 금융 계산과 같이 정확도가 중요한 경우 부동 소수점 타입을 사용해 연산을 처리하는 것은 적합하지 않다. 이때 BigDecimal을 사용하면 소수점 이하의 숫자도 정확하게 표현할 수 있다. float과 double의 문제점 아래 코드를 보자일반적으로 우리는 연산의 결과가 0.3이 나오길 기대하지만 실제로는 0.30000000000000004 라는 이상한 값이 도출된다.double a = 0.1;double b = 0.2;Syste.. 이전 1 2 3 4 5 6 7 다음