Сообщения

MS Lesson ?: Exception Handling

1. Ilk once eger bizim proyektde Global Exception Handler olmadigi ucun program exception atsa Spring onu 500 Internal Server Error kimi qaytarir. Bu tipli response aliriq: {   "timestamp": "2026-05-14T17:17:04.482Z",   "status": 500,   "error": "Internal Server Error",   "path": "/find-by-id/1" } 2. Hetta bu terzde yazsaq bele bu problemi hell etmir: @Transactional public Account foo (Long id) { return accountRepository .findById(id).orElseThrow(() -> new RuntimeException( "Xeta" )); } 3. Bu problemi hell etmek ucun, sade model quraq.  package guru.springframework.cruddemo.error; import java.time.Instant; import com.fasterxml.jackson.annotation. JsonInclude ; import lombok. AllArgsConstructor ; import lombok. Builder ; import lombok. Data ; import lombok. NoArgsConstructor ; @Data @Builder @NoArgsConstructor @AllArgsConstructor @JsonInclude ( JsonInclude .Include. NON_NULL ) public class ErrorRespon...

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