Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @EnableScheduling
- - springov ugradjeni schedule
- - moram main anotirati time ako hocu da koristim
- - trenutak u vremenu kada se metoda poziva -cron
- - u properties to definise, greetings.cron = */30 * * * * * (ovo znaci na svakih 30sec bilo kog dana/sata)
- - npr da subotom pozivam odgovarajucu metodu
- - svaki dan odredjeni cenovnik aktivan
- - taj rasporedjivac ne pokrece novi thread za fju i izvrsice se u tom trenutku pod uslovom da thread nije tad zauzet
- - initial delay stream i fixed rate stream, drugi nacin da se radi schedule bez crona, isto u app properties fajlu
- Validacija:
- - ogranicenja vrednosti atributa, na nivou modela
- - @NotEmpty anotacija na primer
- - min, max vrednosti
- - @CustomAnnotaiton - pravljenje anotacije, pravi se kao interfejs, u paketu validator
- Baza:
- -Instalirati MySql
- -username i password treba uneti - svi clanovi tima istu sifru i username
- -moze i profili u springu
- -u app propertires fajlu se podesava
- -app-uros.properties
- -run configuration profile uros
- -Startuj MySqlServer
- -Instaliraj program koji pristupa bazi, MySql workbench
- -schema.sql, izvrsava se samo na pocetku, ovo se aktivira automatski, nakon toga ide data.sql u src/main/resources folder, preko data.sql, ubacim neke inicijalne podatke
- -svi komuniciraju preko repository, jdbc template-a
- - UserRepository, radi sa User beanom, query vraca tabelu, moram da je mapiram na java objekat
- - KeyHolder klasa, cuva vrednost kljuca koji je baza izgenerisala
- -Ovo zaboravi, koristices HIBERNATE
- -Nikako for petlja pri obracanju bazi, hibernate dozvoljava da se kao parametar prosledi lista
- -ako menjam objektni model, uradi create bar jednom, inace moze da stoji update da bi se cuvali podaci
- -Entity anotacija za klasu koju hocu da bude tabela
- -@Id anotacija znaci da obelezje ulazi u primarni kljuc
- -Set ne prihvata duplikate za razliku od liste
- -PROJEKAT
- -VEZBA TEST
- - cascade atribut -> none - ne radi nijednu kaskadnu operaciju,persist snima novokreirane objekte
- - fetch eager kaze da se ucitava sve zivo, sve zavisne entitete odmah ucita, lazy preporucljiv kad ima dosta kolekcija
- - Repository koncept u springu, za citanje podataka iz baze, Spring Data to omogucava
- - nigde ne implementiraj interfejs koji oznacis sa @Repository, samo se pisu nazivi metoda, Spring na osnovu tih naziva generise sql upite
- - imaju gotovi interfejsi (CrudRepository)
- - za svaki entitet pravim repozitorijum
- - findOneByIndex - samo za id je ugradjeno, ako hocu ovako, klasa mora da ima atribut "index"
- - za svaki atribut posle By mogu da navedem caseInsensitive
- - BillingDetails primer - ima README.txt umesto prezentacije u okviru projekta
- - async - example -> ima ovde email servis, pogledaj za projekat
- - google nalog - enable less secure apps
- - u app properties ide ono podesavanje
- - handluj lepo exception za mail
- VEZBA TESTIRANJE
- - Trebace nam jedinicno i integraciono testiranje, ona dva ne
- - @Transactional anotacija, sva obracanja bazi se izvrsavaju u jednoj trasakciji, da ne bi doslo do nekonzistentnosti u bazi, kad se zavrsi test metoda, kad se test zavrsi, te izmene se ponistavaju!!!!
- - @Test expected za exception moze da se definise, pa ako se desi exception, test je uspesan
- - Moze da se definise skroz druga baza za testove
- - Test/java, test/resources
- - Coverage as Junit test
- - Unit testove za 1 servis napisati, za ove klase sto su hibernate, za ove koje nisu hibernate, njega treba istestirati
- - MockMvc salje http request, u integracionom testu vlaidiram da li odgovor servera sadrzi sve informacije oje ocekujem
- CACHE EXAMPLE
- - bolje umeso liste korisiti set
- - hibernate ima L1 i L2 kesiranje
- - L1 direkno podrzano, postoji na nivou sesije
- - ako u istoj sesiji citam objekat koji sam vec procitao iz baze, procitacu ga iz kesa, necu opet ici u bazu, postoji u jednom tredu
- - EH cache externi keser, da bi enable L2 kesiranje
- - Cache ne mora na projektu da se implementira, ali treba procitati o njemu zbog onog paper-a za 10ku
- CONNECTION POOLING
- - ne treba za projekat, ali isto za onaj paper bi bilo pametno
- - Ako se ukluci Hikari u aplikaciju onda ona dosta brze radi :D
- - kad ukljucim jpa, ukljuci se tomcat automatski
- - iskljucim ga iz jpa, pa onda uklucim hikari
- - dokumentovanje api odgovora i cuda, api response dokumentuje odg servera, neka swagger dokumentacija, api docs
- WEB SOCKETI od proslih vezbi
- - Server moze da bude taj koji inicira komunikaciju sa klijentom
- - slican kao obican rest
- - ima konfiguracionu klasu, sluzi za conf message brokera/servisa
- - publisher posalje brokeru, on zna kojim subscirberima treba da posalje
- - sockJS za angular, mogu a ne moraju na projektu
- TRANSAKCIJE - VRLO BITNO NA PROJEKTU
- - commit trajno cuva promene na bazi
- - sve promene pre komita su vidljive samo u okviru te transakcije
- - ACID - VRLO BITNO cetiri svojstva transakcija, bitno na intervjuima za posao npr
- - Cim jedna transakcija selektuje entitet, ostali nmg da mu pristupe, (to je taj neki nivo izolacije) nivo posle kaze sve isto, ali resava i problem phantom read
- - pesimisticko zakljucavanje zakljucava celu tabelu i za pisanje i za citanje
- - procitaj projekat da vidis gde koje da se implementira
- - optimisticko zakljucavanje- tek prilikom snimanja izmenjenog podatka u bazu se proverava da li je podatak menjan ili nije u medjuvremenu
- - autokomit - izbegavati, svaki sql upit posebna transakcija
- -@Transactional anotacija, oznacava granicu transakcije - ne zakljucava automatski entitete, trba jos stvari odraditi oim ove anotacije
- -@Version anotacija, nemoj je zaboravaljati, bas skida ocenu ako se zaboravi
- - za sledece vezbe iscitaj projekat vidi gde moze primena transakcija
- MESSAGE QUEUE - ne treba za projekat, razmisliti o njemu da li ima gde da se primeni ono za 10, moze pomoci da se resi jedan od problema za veliki broj korisnika
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement