Сообщения
MS Lesson16: Cache. L1 cache, Redis
- Получить ссылку
- X
- Электронная почта
- Другие приложения
1. L1 chace first level cache-dir, Hibernate-in en esas daxili cache-dir. Her Session/EntityManager ucun ayrica olur. Default olaraq hemish aktivdir. Session muddetinde yuklenen entity-leri yadda saxlayir. Session bitende (transaction bitib context baglananda) bu cache-da bitir. Arxa fonda Map<EntityKey, Object> sheklinde saxlanilir. Bu map proxy uzerinden yaranmir. Bu map birbasha Session-un daxili strukturudur. *** Eyni EntityManager/Session daxilinde icra olunan query entity instance qaytarirsa, Hibernate onu persistance context-e daxil edir. mes menim bele bir kodum varsa: @Override @Transactional public void foo () { Account parvin = accountRepository .findAccountByName( "Parvin" ).get(); Account account = accountRepository .findAccountByName( "Parvin" ).get(); System. out .println(parvin == account); } Burada addim addim ne bash verir: 1. Hibernate ilk select-i atir, ve oyekti getirir. Sonra map-a qoyur key = id value = entity ozu. 2...
MS Lesson15: Locking mechanism & Transaction propogation
- Получить ссылку
- X
- Электронная почта
- Другие приложения
1. Optimistic Read = Optimistic Optimistic Read zamani row-a lock qoyulmur version ile idare olunur. Optimistic o demekdir ki, problem olmayacaq ve ya cox az olacaq. package guru.springframework.cruddemo.service.impl; import guru.springframework.cruddemo.entity.Account; import guru.springframework.cruddemo.repository.AccountRepository; import guru.springframework.cruddemo.service.AccountService; import lombok. RequiredArgsConstructor ; import lombok.extern.slf4j. Slf4j ; import org.springframework.stereotype. Service ; import org.springframework.transaction.annotation. Transactional ; import org.springframework.transaction.support.TransactionSynchronizationManager; @Service @Slf4j @RequiredArgsConstructor public class AccountServiceImpl implements AccountService { private final AccountRepository accountRepository ; @Override @Transactional public void transfer (Integer amount) { System. out .println(Thread. currentThread ().getName()); System. out ....
MS Lesson14: @Transactional
- Получить ссылку
- X
- Электронная почта
- Другие приложения
1. Arxa planda proxy nece implement olunur package guru.springframework.cruddemo.service.impl; import guru.springframework.cruddemo.entity.Account; import guru.springframework.cruddemo.repository.AccountRepository; import guru.springframework.cruddemo.service.AccountService; import lombok. RequiredArgsConstructor ; import lombok.extern.slf4j. Slf4j ; import org.springframework.stereotype. Service ; import org.springframework.transaction.annotation. Transactional ; @Service @Slf4j @RequiredArgsConstructor public class AccountServiceImpl implements AccountService { private final AccountRepository accountRepository ; @Override @Transactional public void transfer (Integer amount) { Account fromAccount = accountRepository .findById( 1L ).get(); Account toAccount = accountRepository .findById( 2L ).get(); fromAccount.setAmount(fromAccount.getAmount() - amount); toAccount.setAmount(toAccount.getAmount() + amount); } } arxa planda yaranan kla...
MS Lesson13: Proxy Design Pattern, ACID & Transaction
- Получить ссылку
- X
- Электронная почта
- Другие приложения
Proxy Design Pattern Proxy - it provides an object that acts as substitute for a real service object used by a client. A proxy receives client requests, does some work and then passes the request to a original object. package guru.springframework.cruddemo.proxy; public interface DailySession { void attendLesson (); } package guru.springframework.cruddemo.proxy; import lombok. AllArgsConstructor ; import lombok. Data ; import lombok. NoArgsConstructor ; import java.util.Date; @Data @NoArgsConstructor @AllArgsConstructor public class Attendance { private Date date ; private boolean isPresent ; } package guru.springframework.cruddemo.proxy; import lombok. Data ; @Data public class Student implements DailySession { private final Attendance attendance ; public Student (Attendance attendance) { this . attendance = attendance; } @Override public void attendLesson () { System. out .println( "Attending the session..." ); } } package...