- Spring Transaction 3starryeye트랜잭션의 옵션 value 요소, transactionManager 요소 트랜잭션 매니저를 둘 이상 사용할 경우에 사용된다. 트랜잭션 프록시가 사용할 트랜잭션 매니저를 지정해 줄 수 있다. 트랜잭션 매니저의 스프링 빈 이름을 기입하면 된다. 생략 가능하며, 생략할 경우 기본으로 등록된 트랜잭션 매니저가 사용된다. ex. @Transaction("TxM") (어노테이션에서 요소가 하나인 경우, value는 생략가능) rollbackFor 요소 스프링 트랜잭션은... 언체크 예외가 발생하면 롤백하고, 체크 예외가 발생하면 커밋한다. 하지만.. 커밋하고 싶지 않은 체크예외가 있을 수 있다. 이 때 사용된다. ex. @Transaction(rollbackFor = Exception.class) -> 모든 예외를..
- 2022-09-22 22:57:00
- Spring Transaction 2starryeye트랜잭션 AOP 주의사항에 대해 알아보자. 1. 동일 클래스에서 내부 @Transaction 메서드 호출 @Component class Service { @Transaction public void A() { } public void B() { A(); } } @Component @RequiredArgsConstructor class Controller { private final Service s; public void X() { s.A(); } public void Y() { s.B(); } } Service 클래스에서 A() 메서드에 @Transaction 어노테이션이 적용되어있다. B() 메서드는 @Transaction 어노테이션이 적용되어 있지 않고 내부에서 A()를 호출하고 있다. Contro..
- 2022-09-22 22:26:19
- Spring Transaction 1starryeye트랜잭션을 공부하기 앞서.. 순수 JDBC를 사용할 경우에 트랜잭션을 처리하는 법과 JPA를 사용할 경우에 트랜잭션을 처리하는 법에 대해 잠깐 복습해보자. 순수 JDBC 트랜잭션 Connection con = dataSource.getConnection(); try { con.setAutoCommit(false); //트랜잭션 시작 //비즈니스 로직 con.commit(); //비즈니스 로직 성공 시.. }catch(Exception e) { con.rollback(); //비즈니스 로직 실패 시.. throw new IllegalStateException(e); }finally { release(con); } JPA 트랜잭션 //Entity 매니저 팩토리 생성 EntityManagerFactory em..
- 2022-09-22 21:44:34
- @Controller, @Service, @RepositorystarryeyeSpring이 제공하는 어노테이션 중.. @Controller, @Service, @Repository에 대해 알아보자.. 먼저 @Controller이다. @Component의 specialization이라 설명해주고 있다. @Component의 일종이므로, 컴포넌트 스캔에 의해 스프링 컨테이너에 자동으로 등록되는 빈이다. 그리고... handler method에 붙이는 @RequestMapping 어노테이션을 지원해줄 수 있다. 자매품으로 @RestController가 있다. @RestController = @Controller + @ResponseBody @Service이다. @Service 어노테이션은 그냥 @Component와 다를바가 없다. 개발자가 서비스 계층이라 명시 하고 싶을 때 사용한다...
- 2022-09-09 22:09:44
- JPA 찍먹 1starryeyeJPA에 대해 학습해보자.. 스프링과 JPA는 자바 엔터프라이즈 시장의 주력 기술이다. 스프링과 JPA는 각각 아래를 제공한다. 스프링은 DI 컨테이너를 포함한 애플리케이션 전반의 기능을 제공 JPA는 ORM(Object - Relational Mapping) 데이터 접근 기술을 제공 Jdbc를 사용한 데이터 접근 기술은 크게 3가지로 나뉜다. 1. Jdbc를 개발자가 직접 사용 2. SQL Mapper 기술을 사용 3. ORM 기술을 사용 해당 기술에 대한 간략한 정리는 이전 포스팅을 참고하자.. https://starryeye.tistory.com/44 JDBC 2 JDBC를 사용한 데이터 접근 기술은 크게 3가지로 나뉜다. 1. JDBC를 직접 사용 2. SQL Mapper 3. ORM 기술 JDB..
- 2022-09-09 21:33:59
- [Modern C++ 정리] Move 4starryeye본격적으로 move 생성자 (이동 생성자)에 대해 알아보자.. Cat 클래스의 정의 및 선언 부이다. 16 line에서 const lvalue reference로 복사(copy) 생성자를 정의 하였다. rvalue, lvalue 모두 지원된다. 깊은 복사로 구현하였다. 24 line은 이동(move) 생성자이다. rvalue reference의 파라미터로 정의 되었다. rvalue가 지원된다. (rvalue를 넣으면 16 line 보다 우선이다.) 특징은.. 들어온 임시객체(rvalue)의 모든 값을 얕은 복사 한다. 임시 객체의 포인터 변수 name은 nullptr로 할당하여 이후, 호출 부분에서 임시객체가 파괴 될때, 포인터 변수의 name이 해제 되지 않도록 한다. 위와 같이 rvalue의 값을 변..
- 2022-09-08 21:59:22
- [Modern C++ 정리] Move 3starryeyemove를 알아보기 위해 먼저 copy를 알아보자.. 위 코드의 문제점에 대해 알아보자.. main() 함수에서.. Cat 클래스의 c1 이라는 지역 객체 를 선언 하였다. c2라는 지역 객체를 선언하고 c1으로 복사 대입 연산자로 초기화 하였다. C++에서는 복사 대입 연산자로 초기화 할 경우, 복사 생성자가 호출 된다. Cat 클래스에서 현재 복사 생성자가 없는데 이때 컴파일러가 생성해준다. 생성해주는 복사 생성자는 얕은 복사로 생성된다. 그래서 해당 코드의 문제는 복사 생성자(얕은 복사)로 c2가 초기화 되기 때문에.. c1의 포인터 변수 name 과 c2의 포인터 변수 name이 동일한 값을 가지게 된다. 그리고.. main() 함수 블럭이 끝날 때.. c1, c2의 소멸자가 불리게 되는데.. c..
- 2022-09-08 20:58:38
- [Modern C++ 정리] Move 2starryeye지난 Move 1 포스팅에서는.. 임시 객체(rvalue)를 가리킬 수 있는 rvalue reference lvalue를 가리킬 수 있는 lvalue reference rvalue, lvalue 둘다 가리킬 수 있는 const lvalue reference 에 대하여 알아보았다. 조금더 확장하여.. 함수 파라미터 관점에서 동일하게 알아보자. Point 구조체이다. 위 코드 처럼 함수 오버로딩이 가능하다. 1번 함수는 Point 구조체를 lvalue reference로 lvalue를 받을 수 있도록 하였다. 2번 함수는 const lvalue reference로 lvalue, rvalue 모두 받을 수 있도록 하였다. (상수성) 3번 함수는 rvalue reference로 rvalue를 받을 수 있도록 하..
- 2022-09-08 20:40:17
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)