김영한님의 스프링 강의를 들어오면서 CUD에는 @Transactional을 R에는 아무 어노테이션을 붙여오지 않았다. 이게 정석인 줄 알았는데 같이 프로젝트를 진행한 팀원이 service 계층의 모든 메소드에 해당 어노테이션을 붙이는 것을 보고 관련 내용들을 찾아보니 이 3개가 엄연히 말하면 모두 다른 것이었다. 이번 글에서는 @Transactional, @Transactional(readOnly = true), 트랜잭션 어노테이션 없음 간 동작방식의 차이에 대해서 자세히 알아보고자 한다. public class Service { @Transactional public void createOrUpdateOrDeleteSomething() {} @Transactional(readOnly = true) pu..
프로젝트를 진행하다 OSIV라는 단어를 듣게 되었다. 그럼 트랜잭션과 DB connection 간의 상관관계는 어떻게 되지?라는 의문이 들어 이참에 각 개념들을 정리하고자 한다. 먼저 트랜잭션의 정의를 먼저 보고 가자. 하나의 작업을 수행하기 위해 필요한 데이터베이스 연산들을 모아 놓은 것으로, 데이터베이스에서 논리적인 작업의 단위가 된다. 만약 A가 B에게 자신의 통장에서 1만원의 금액을 송금한다면 SQL 상 A의 계좌에서 1만원이 마이너스되고, B의 계좌에는 1만원이 플러스되는 작업이 모두 수행되어야 한다. 만약 A의 계좌에서만 1만원이 빠져나가고 B의 계좌에는 1만원이 들어오지 않는다면 이는 데이터베이스의 무결성과 일관성이 깨지게 되는 결과를 낳는다. 따라서 각 2개의 SQL을 하나의 작업 단위로 ..
해당 글은 '윤성우의 열혈 C++ 프로그래밍'을 참고하여 작성함. (이하 해당 도서라고 지칭) C++에서는 C에서의 형변환 연산자보다 좀더 제한적인 형태의 형변환이 가능하다. C에서의 (변환 타입)의 형변환 연산자는 정말 말도 안되는 형변환도 오류 없이 실행이 된다. 제한이 없어 유용할 것 같지만 이는 예상치 못한 프로그램 실행 결과가 발생하는 원인이 되기도 한다. C++의 형변환에 대해 설명하기 앞서 왜 C의 형변환 연산자를 제한적으로 사용해야 하는지 먼저 짚고 넘어가고자 한다. #include using namespace std; class Basic { private: int num; public: Basic(int num) :num(num) {} void showInfo() { cout
해당 글은 '윤성우의 열혈 C++ 프로그래밍'을 참고하여 작성함. C++에서 상속 파트를 공부하다 보면 기존에 자바에 익숙한 사람이라면 뭐지...? 싶은 부분이 있다. 자식 클래스 객체를 부모 클래스 객체에 할당하고 해당 객체의 메소드를 호출하는 경우, 자바라면 자식 클래스에 정의한 메소드가 호출된다. 반면 C++은 부모 클래스(기초 클래스)에 정의한 멤버 함수가 호출된다. 일단 해당 상황을 코드로 정리해보자. class Parent { void print() { System.out.println("Parent"); } } class Child extends Parent { @Override void print() { System.out.println("Child"); } void print2() { S..
- Total
- Today
- Yesterday
- spring
- QueryDSL
- 템플릿 콜백 패턴
- 서블릿 컨테이너
- 디자인 패턴
- github
- mockito
- Spring Security
- servlet filter
- junit5
- Transaction
- spring aop
- Gitflow
- JPA
- Git
- C++
- Linux
- 전략 패턴
- vscode
- ParameterizedTest
- 모두의 리눅스
- FrontController
- spring boot
- SSE
- Java
- rest api
- Front Controller
- 단위 테스트
- facade 패턴
- Assertions
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |