Генерално тоа е решението. Но, во случајот на hibernate, зависи дали relationship ентитетот кој го бараш се наоѓа во first level (или second level ако е конфигуриран) cache. На пример, ако имаш ентитет Course кој содржи Organization, и во courses табелата имаш само 3 редици и сите тие се врзани со една иста организација, тогаш со обичен L1 cache, ќе се извршат 2 queries:
Првото за сите Courses,
Второто за Organization на првиот Course
Organization на вториот и третиот Course ќе биде прочитана од кешот (бидејќи второтo query веќе ја прочита) и нема да има потреба од query до база.
Немам предлог материјали, но можам да кажам за кои концепти/знаења мислам дека се важни:
Java:
-
Разлика помеѓу примитивни типови и објекти
Овде се подразбира да ја знаеш разликата помеѓу примитивните варијабли и wrapper класите(на пример: int и Integer), зошто постојат wrapper класите, кои се нивните pros/cons
-
Основни разбирања од наследување и композиција
Што е разликата помеѓу наследување и композиција? Во кои случаеви би го користел едното, во кои другото. Што е полиморфизам и како е поврзан со овие 2 концепти?
-
Static методи и варијабли
Што е static? Кога треба да се користи?
-
Работа со основните податочни структури - Lists, Maps, Sets.
Да се разбира комплексноста на операциите (на пр. insert, search, итн) во податочните структури и да можеш да препознаеш која каде треба да се искористи. На пример, ако ти кажам дека имаш List-а од Integer-и и сакам да ги испечатиш сите елементи кои се дупликати (се појавуваат повеќе од еднаш) очекувам тоа да го решиш со О
комплексност, каде што n е бројот на елементи во листата.
- Познавање на java stream API-то
Што претставува Stream? Користење на java stream API-то за simple операции од типот на filter, map, collect.
- Nice to have (со овие би отскокнал од другите кандидати)
Разбирање на основни design patterns како што се: Singleton, Strategy, Proxy, Dependency Injection, T
Користење на анонимни класи, lambda expressions, functional interfaces, method references
Functional programming
Паралелно извршување, thread safety, синхронизација
Backend:
-
MVC - software layers (controller, service, repository)
-
JPA (java persistence API)
Да се има познавања од барем една JPA имплементација (99% од фирмите користат hibernate кај нас). Под познавања, подразбирам да можеш да напишеш и да извршиш query преку java код.
- HTTP
Да можеш да објасниш како работи HTTP протоколот, што се headers/cookies/sessions.
-
Web Frameworks
Да си запознаен со некој java web framework (на пример Spring). Да можеш да креираш проектче од scratch и да испечати "Hello world" на localhost:8085/hello
- Nice to have
Познавање од полето на security/authentication/authorization
Пишување на integration/unit тестови
Бази:
- Преточување на даден проблем во ER дијаграм (препознавање и креирање на релации)
- Пишување DDL и DML изрази