분류 전체보기 (71) 썸네일형 리스트형 [Spring] Transaction 정리, 설정 Transaction - 비즈니스에서는 쪼개질 수 없는 하나의 단위 작업을 말할 때 '트랜잭션(Transaction)'이라는 용어를 사용한다. - 사전적인 의미로 트랜잭션은 '거래'라는 뜻을 가지지만, 현실적으로는 '한 번에 이루어지는 작업의 단위'를 트랜잭션으로 간주한다. ACID원칙 원자성(Atomicity) 하나의 트랜잭션은 모두 하나의 단위로 처리되어야 한다. 좀 더 쉽게 말하자면 어떤 트랜잭션이 A와 B로 구성된다면 항상 A, B로 구성된다면 항상 A, B의 처리 결과는 동일 결과이어야 한다. 즉, A는 성공했지만, B는 실패할 경우 A, B 모두 원래 상태로 되돌려져야 한다. 어떤 작업이 잘못되는 경우 모든 것은 다시 원점으로 돌아가야 한다. 일관성(Consistency) 트랜잭션이 성공했다면.. [Spring] AOP 정리 AOP(Asepect-Oriented Programming) - '관점 지향 프로그래밍' 이라는 의미로 번역되는데, 객체지향에서 특정 비즈니스 로직에 걸림돌이 되는 공통 로직을 제거할 수 있는 방법을 제공한다. - AOP를 적용하면 기존의 코드에 첨삭없이, 메서드의 호출 이전 혹은 이후에 필요한 로직을 수행하는 방법을 제공한다. - AOP는 흔히 '관점 지향 프로그래밍'이라는 용어로 번역되는데, 이때 '관점(Aspect)'이라는 용어는 개발자들에게 '관심사(concern)'이라는 말로 통용된다. '관심사'는 개발 시 필요한 고민이나 염두에 두어야 하는 일이라고 생각할 수 있는데, 코드를 작성하면서 염두에 두는 일들을 주로 다음과 같다. ∙ 파라미터가 올바르게 들어왔을까? ∙ 이 작업을 하는 사용자가 적절.. [Spring] Controller의 Exception처리, @ControllerAdvice - Controller를 작성할 때 예외 상황을 고려하면 처리해야 하는 작업이 엄청나게 늘어날 수 밖에 없다. - 스프링 MVC에서는 이러한 작업을 다음과 같은 방식으로 처리할 수 있다. ∙@ExceptionHandler와 @ControllerAdvice를 이용한 처리 ∙@ResponseEntity를 이용하는 예외 메시지 구성 @ControllerAdvice - AOP(Aspect-Oriented-Programming)를 이용하는 방식이다. - Controller를 작성할 때는 메서드의 모든 예외사항을 전부 핸들링해야 한다면 중복적이고 많은 양의 코드를 작성해야 하지만, AOP방식을 이용하면 공통적인 예외사항에 대해서는 별도로 @ControolerAdvice 어노테이션을 이용해서 분리하는 방식이다. [1.. [Docker] Container Timezone 변경 https://bobcares.com/blog/change-time-in-docker-container/ 5 ways to change time in Docker container Are you a Docker provider who cater to customers round the globe? Don't worry, you can change time in Docker container in these 5 ways. bobcares.com [Servlet/JSP] JSESSIONID??? 정리를 해보면 1) Client가 브라우저에 접속하면 서버에서 Session을 생성을 한다. (서버에 Session이 존재하지 않는다면) 2) 서버는 생성된 Session의 Id값을 Cookie Session(쿠키임)에 담아서 브라우저로 다시 전송한다. 3) 브라우저 메모리에 Session id값이 담긴 Cookie Session이 저장되는데, 이 Cookie의 이름이 바로 JSESSIONID + Tomcat을 통해서 실행되는 WAS가 발행하는 쿠키의 이름이다. [Servlet/JSP] Cookie와 Session Session Tracking - HTTP 프로토콜 방식으로 통신하는 웹 페이지들은 서로 어떤 정보도 공유하지 않는다. - 사용자 입장에서 웹 페이지 사이의 정보를 공유하려면 SessionTracking이라는 웹페이지 기능을 구현해야한다. 예를 들어서 카트 기능을 사용하는 웹애플리케이션에서 클라이언트(사용자)는 multiple requests를 사용하여 카트에 물건을 담는다. 이 때, 모든 요청이 생성될 때 마다 서버는 물건이 담기는 사용자를 식별해야만 한다. 따라서 SessionTracking이 필요하다. - HTTP 프로토콜은 서버-클라이언트 통신 시 stateless 방식으로 통신을 한다. 즉, 브라우저에서 새 웹 페이지를 열면 기존의 웹 페이지나 서블릿에 관한 어떤 연결 정보도 새 웹페이지에서는 .. [Docker] Oracle 계정 활성화 참고 https://yruby.tistory.com/38 [oracle] mac에서 docker로 oracle11g 실행 후 sqlplus sysdba 접속 mac에서 거의 6개월 만에 sqldeveloper 접속 ▽ 비번 잊어버려서 여러번 시도 ▽ the account is locked ▽ lock 풀기위해 sysdba로 접속 시도 ▽ insufficient privileges 에러 (권한 불충분) ▽ 권한 주기 위해.. yruby.tistory.com https://whitepaek.tistory.com/40 macOS 오라클 DB 설치 및 실행 방법 macOS에서 오라클 데이터베이스(oracle database)를 사용하기 위해서는.. 맥 OS에서 오라클 데이터베이스를 사용하기 위해서는 도커(docker.. [Eclipse] MAC OS에서 Lombok 라이브러리 설정하기 + 어노테이션 1. 다운로드 link : https://projectlombok.org/download 2. 설치하기 터미널을 실행시키고 저장한 도큐먼트로 이동하여 java -jar lombok.jar 입력한다. Installer가 실행되면 [install / Update]을 클릭해준다. [Quit Installer]을 누르고 빠져나온다. 3. Maven Dependency 설정하기 link : https://mvnrepository.com/ Maven Repository에 접속해서 lombok 검색하고 가장 상위에 있는 Project Lombok을 클릭한다. 가장 다운로드 수가 많은 버젼을 클릭한다. 복사해서 pom.xml에 붙여넣으면 끝! + 설치 후 lombok이 작동안할 때 java -Dlombok.instal.. [Java] 제네릭(Generic) Q. 왜 제네릭을 사용해야 할까? - 제네릭은 클래스와 인터페이스, 그리고 메소드를 정의할 때 타입(type)을 파라미터(parameter)로 사용할 수 있도록 한다. 타입 파라미터는 코드 작성 시 구체적인 타입으로 대체되어 다양한 코드를 생성하도록 해준다. 제네릭을 사용하는 코드가 비제네릭 코드에 비해 가지는 이점? 1. 컴파일 시 강한 타입 체크를 할 수 있다. : 자바 컴파일러는 코드에서 잘못 사용된 타입 때문에 발생하는 문제점을 제거하기 위해 제네릭 코드에 대해 강한 타입 체클르 한다. 실행 시 타입 에러가 나는 것보다는 컴파일 시에 미ㅣ 타입을 강하게 체크해서 에러를 사전에 방지하는 것이 좋다. 2. 타입 변환(casting)을 제거한다. : 비제네릭 코드는 불필요한 타입 변환을 하기 때문에 프.. [Java] 멀티스레드(Multi Thread) 1. 멀티 스레드 개념 1-1) 프로세스와 스레드 - 스레드(Thread)는 사전적 의미로 한 가닥의 실이라는 뜻인데, 한 가지 작업을 실행하기 위해 순차적으로 실행할 코드를 실처럼 이어놓았다고해서 유래되었다. - 하나의 스레드는 하나의 코드 실행 흐름이기 때문에 한 프로세스 내에 스레드가 두 개라면 두 개의 코드 실행 흐름이 생긴다는 의미이다. - 멀티 프로세스(Multi Process)가 애플리케이션 단위의 멀티 태스킹이라면 멀티 스레드(Multi Thread)는 애플리케이션 내부에서의 멀티 태스킹이라고 볼 수 있다. - 멀티 프로세스들은 운영체제에서 할당받은 자신의 메모리를 가지고 실행하기 때문에 독립적이다, 따라서 하나의 프로세스에서 오류가 발생해도 다른 프로세스에게 영향을 미치 않는다. - 멀티.. 이전 1 ··· 4 5 6 7 8 다음