일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- spring
- db
- JDBC
- Servlet
- 스프링
- 그리디
- Spring Boot
- transaction
- Android
- http
- 스프링 핵심 기능
- Proxy
- QueryDSL
- 알고리즘
- 백준
- 인프런
- kotlin
- SpringBoot
- JPQL
- Thymeleaf
- pointcut
- java
- springdatajpa
- 김영한
- jpa
- AOP
- Exception
- 스프링 핵심 원리
- 자바
- Greedy
- Today
- Total
목록@Transactional (8)
개발자되기 프로젝트
JPA를 사용하면 SQL까지 안적어도 된다! 객체를 JPA에 넣어주면 JPA가 중간에서 DB에 SQL날리고 data가져옴 SQL과 Data중심의 설계에서 객체 중심의 설계로 패터다임 전환 JPA 소개 1. ORM(Object Relational Mapping) 객체와 관계형 Database를 자동으로 mapping시켜주는 것을 말한다. 객체지향 프로그래밍의 기본 단위는 object 이고 관계형 Datebase의 기본단위는 table이다. 따라서 객.. bsh-developer.tistory.com 1. build.gradle JPA를 사용하기 위해서 dependency 추가가 필요하다.(jdbc는 지워주자) //implementation 'org.springframework.boot:spring-boot..
Spring을 사용,DB 연결까지 모두 테스트를 해보자! 0. @SpringBootTest @SpringBootTest //스프링 테스트 class MemberServiceIntegrationTest { 1. 스프링 빈에서 주입을 받자 기존에 작성한 test는 각 Test실행 전 memberReository를 직접 생성하고 memberService에 직접 주입해 줬다. @BeforeEach public void beforeEach(){ memberRepository = new MemoryMemberRepository(); memberService = new MemberService(memberRepository); } 하지만 현재 memberRepository, memberService는 스프링 빈으로 ..
The Stpring team recommends that you annotate only concrete classeds with the @Transactinal annotation as apposed to annotating interfaces. you certainly can place the @Transactional annotation on an interface( or an interface method), but this works only as you would expect it to if you use inferface-based proxies. 1. @Transactional은 interface보다는 구체 class에 사용하는 것을 권장 2. interface는, interface-ba..
Transaction Manager - 2 Transaction Manager - 1 1. Transaction이란? Data Base에서 다루는 개념. DB명령어들의 논리적인 묶음이다. Transaction의 성질 : ACID A : atomatic(원자성), 부분적의 성공을 허용하지 않는다. 중간 단계까.. bsh-developer.tistory.com 1. isolation : Transaction의 격리 수준. 동시에 발생하는 tracsaction간에 data 접근을 어떻게 할지 정함. 5가지 Isolation 단계를 제공함. LEVEL 격리단계 REMARK - DEFAULT DB의 default 격리단계를 적용함 MySQL은 기본 격리단계 = REAPETABLE_READ 0 READ_UNCOMM..
Transaction Manager - 1 1. Transaction이란? Data Base에서 다루는 개념. DB명령어들의 논리적인 묶음이다. Transaction의 성질 : ACID A : atomatic(원자성), 부분적의 성공을 허용하지 않는다. 중간 단계까지 실행되고 실패하는 일이 bsh-developer.tistory.com Transaction 의 특징 : All or Nothing, DB에 전부 반영하거나 전부 안하거나, 원자성 1. @Transactional 없을 때 예외발생 시 에 기존에 붙여준 @Transactional을 주석처리하자. @Service @RequiredArgsConstructor public class BookService { // @Autowired //요즘에는 Au..
1. Transaction이란? Data Base에서 다루는 개념. DB명령어들의 논리적인 묶음이다. Transaction의 성질 : ACID A : atomatic(원자성), 부분적의 성공을 허용하지 않는다. 중간 단계까지 실행되고 실패하는 일이 없도록 하는 것 C : consistance(일관성), 고립된 트랜잭션의 수행이 데이터베이스의 일관성을 보존해야 한다. 즉, 성공적으로 수행된 트랜잭션은 정당한 데이터들만을 데이터베이스에 반영해야 한다. 예를들어 예금 이체의 같은 경우 두 계좌의 금액의 합은 이체 전후 동일해야 한다. I : isolation(독립성), transaction 내 data 조작에 대해서는 다른 transaction으로부터 독립적이다. 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업..
1. Transaction 데이터 베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위. 예를들어 A가 B에게 100만원을 송금한다 할 때. 논리적인 기능은 송금. 송금을 위한 작업은 "A인출+A잔액 업데이트 +B입금+B잔액 업데이트" 즉 어떤 논리적 기능을 위해 query를 connection으로 묶어서 DB에 전달, 에러 발생 시 원래대로 돌려놓는 기능. 2. @Transactoinal - spring에서 제공하는 선언적 transaction이다. annotaion을 붙이면 해당 method나 class에 transaction이 적용 가능. - 상위에서 @Transactional로 묶지 않으면 내부에서 만 transaction으로 묶어준다. save로 예를 들면 자체적으로 @Tr..
1. @Transactional Test class에 @Transactional 붙여주면 각 테스트가 종료될 때마다 사용한 데이터를 rollback 시켜줌. 2. JPA metamodel must not be empty! @WebMvcTest는 Spring context 전부를 로딩하는게 아니라 Web Controller 관련된 일부분만 로딩하여 테스트를 함 JPA옵션에서 발생하는 문제임 1) @MockBean 아래 테스트 코드는 JPA가 필요없어서 로딩을 할 수 없는건데, Mock으로 만들어서 해당 오류 피함. @WebMvcTest //sliced test 전체 spring context를 로드하는게 아니라, 일부분만. @MockBean(JpaMetamodelMappingContext.class) cl..