Сообщения

MS Lesson16: Cache. L1 cache, Redis

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. 

MS Lesson15: Locking mechanism & Transaction propogation

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

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

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...