Font size
WorksheetsQuiz z programowania w Javie
Total questions: 129
Worksheet time: 1hrs 10mins
Co się stanie po uruchomieniu?
Program się wykona poprawnie i wypisze 10
Program zgłosi wyjątek w czasie wykonania (ArithmeticException)
Program zgłosi błąd kompilacji
Program wypisze 0
Co zostanie wyświetlone?
Błąd kompilacji, bo x nie jest zainicjalizowane
0
null
Program zgłosi wyjątek w czasie wykonania
Co się stanie po uruchomieniu programu?
Program wypisze 7
Program wypisze x+7
Błąd kompilacji
Program zgłosi wyjątek w czasie wykonania
Co się stanie po uruchomieniu programu?
Program wypisze 0
Program wypisze 5
Błąd kompilacji, bo x może nie zostać zainicjalizowane
Program zgłosi wyjątek w czasie wykonania
Opcje odpowiedzi:
5, 10, 3, 7
8, 10, 8, 7
8, 10, 8, 0
5, 10, 8, 7
Opcje odpowiedzi:
2, 2, 2, 3
2, 2, 2, 0
2, 2, 2, 2
2, 2, 2, 5
Które słowo kluczowe służy do przechwycenia wyjątku, który wystąpił w bloku try?
try
catch
throw
throws
Które słowo kluczowe deklaruje, że metoda może zgłaszać wyjątki?
try
catch
throw
throws
Jakim słowem kluczowym możesz jawnie zgłosić wyjątek w dowolnym miejscu metody?
try
catch
throw
throws
Który blok kodu należy użyć, aby określić fragment, w którym mogą wystąpić wyjątki?
try
catch
throw
throws
Które słowo kluczowe wypełni puste miejsce, aby poprawnie zadeklarować możliwość wystąpienia wyjątku?
try
catch
throw
throws
Które słowo kluczowe NIE jest używane do obsługi wyjątków w czasie wykonywania programu?
try
catch
finally
class
Co zostanie wyświetlone po uruchomieniu programu?
Wynik: 0
Wystąpił wyjątek!
Program się nie skompiluje
Wynik: 10
Co zostanie wyświetlone po uruchomieniu programu?
Wynik: 0
Wystąpił wyjątek!
Program się nie skompiluje
Wynik: 10
Co się stanie po uruchomieniu programu?
Wyświetli "Liczba: -5"
Wyświetli "Liczba: 5"
Zgłoszony zostanie wyjątek typu IllegalArgumentException
Program zakończy się bez błędu
Co jest prawdą w tym kodzie?
Metoda risky() może zgłaszać wyjątek, który musi być obsłużony lub zadeklarowany
Program skompiluje się i uruchomi bez problemów
throws automatycznie przechwytuje wyjątek
throw jest zbędny w tym kodzie
Co zostanie wyświetlone po uruchomieniu programu?
Wynik: 0
Wyjątek: Nie dziel przez zero
Program się nie skompiluje
Wynik: 10
Opcje:
try … catch
catch … try
throw … throws
throws … throw
Co wpisać w miejsca: _____
throws / throw
throw / throws
try / catch
catch / try
co wpisać w miejsce ___
throws
throw
try
catch
Co wpisać w miejsca ____
throws / throw / catch
throw / throws / try
try / catch / throw
catch / throw / throws
Co zostanie wypisane na konsoli?
0, 0
null, null
Błąd kompilacji – brak konstruktora
x, y
Które zdanie jest prawdziwe?
Konstruktor może mieć dowolną nazwę.
Konstruktor nie zwraca żadnej wartości, nawet void.
Konstruktor można przeciążać tylko raz w klasie.
Konstruktor domyślny jest tworzony, nawet jeśli zdefiniowano inne konstruktory.
W klasie można w konstruktorze umieścić:
Tylko inicjalizację pól klasy.
Dowolny kod, który ma być wykonany przy tworzeniu obiektu.
Wyłącznie wywołanie konstruktora nadrzędnego super().
Tylko komentarze i deklaracje zmiennych lokalnych.
Co się stanie, jeśli w klasie zdefiniujesz konstruktor z argumentami, ale spróbujesz utworzyć obiekt bezargumentowo?
Obiekt zostanie utworzony, a pola przyjmą wartości domyślne.
Błąd kompilacji – brak konstruktora bezargumentowego.
Java automatycznie doda konstruktor domyślny.
Program zakończy działanie z wyjątkiem w runtime.
Jeśli klasa B dziedziczy po klasie A, co jest prawdziwe?
Konstruktor klasy B automatycznie wywołuje konstruktor domyślny klasy A.
Konstruktor klasy B zawsze ignoruje konstruktor klasy A.
Konstruktor klasy B może wywołać konstruktor klasy A tylko jeśli jest statyczny.
Konstruktor klasy B musi być pusty.
Które stwierdzenie jest prawdziwe?
Kompilator automatycznie doda konstruktor domyślny bezargumentowy.
Jeśli spróbujesz utworzyć obiekt new Punkt(), wystąpi błąd kompilacji.
Konstruktor domyślny istnieje, ale nie ustawia pól x i y.
Konstruktor domyślny można użyć tylko, jeśli klasa nie ma żadnych pól.
Gdzie w pamięci przechowywane są: obiekt o klasy Osoba zmienna lokalna liczba?
Obiekt na stosie, zmienna lokalna w rejestrach procesora
Obiekt na stercie (heap), zmienna lokalna na stosie
Obiekt w obszarze stałym, zmienna lokalna w obszarze stałym
Obiekt na stosie, zmienna lokalna na stercie
Co zostanie wypisane?
15, 5
15, 20
5, 20
5, 5
Gdzie są przechowywane poszczególne elementy?
licznik i obiekty t1, t2 na stercie, lokalna na stosie
licznik w obszarze stałym, obiekty t1 i t2 na stercie, lokalna na stosie
Wszystkie zmienne i obiekty na stercie
licznik i lokalna na stosie, t1 i t2 w rejestrach procesora
Gdzie są przechowywane poszczególne elementy?
licznik i obiekty t1, t2 na stercie, lokalna na stosie
licznik w obszarze stałym, obiekty t1 i t2 na stercie, lokalna na stosie
Wszystkie zmienne i obiekty na stercie
licznik i lokalna na stosie, t1 i t2 w rejestrach procesora
Co zostanie wyświetlone na konsoli?
Java
Python
null
Błąd kompilacji
Co zostanie wyświetlone na konsoli?
1
10
0
Błąd w czasie wykonania
Co się stanie po uruchomieniu programu?
Zostanie wyświetlona wartość 0
Zostanie wyświetlona wartość null
Kompilator zgłosi błąd nieinicjalizowanej zmiennej
Program wyświetli losową wartość
Który z poniższych typów danych w Javie NIE jest typem prymitywnym?
boolean
int
String
char
Co się stanie, gdy przypiszemy jedną zmienną obiektową do drugiej?
Tworzona jest nowa kopia obiektu w pamięci
Kopiowana jest wartość pola obiektu
Kopiowany jest adres w pamięci – obie zmienne wskazują ten sam obiekt
Program zgłosi błąd kompilacji
Która z poniższych deklaracji w Javie tworzy typ referencyjny?
int liczby = 5;
double wynik = 3.14;
String[] imiona = new String[5];
char znak = 'A';
Który modyfikator daje dostęp wyłącznie w obrębie tej samej klasy?
public
protected
private
default
Który modyfikator pozwala na dostęp w klasach dziedziczących, nawet w innym pakiecie?
private
protected
default
public
Który modyfikator daje pełny dostęp z każdego miejsca w programie?
default
private
public
protected
Co się stanie, jeśli pole nie ma żadnego modyfikatora dostępu?
Dostęp tylko w obrębie klasy
Dostęp w obrębie tego samego pakietu
Dostęp w całym projekcie
Dostęp tylko w klasach dziedziczących
Które elementy mogą znajdować się w klasie w Javie?
Pola i metody – opcjonalnie
Pola i metody – obowiązkowo
Konstruktory – obowiązkowo
Wszystkie elementy muszą być obecne
Co się stanie, jeśli w klasie nie zdefiniujemy żadnego konstruktora?
Kompilator zgłosi błąd
Obiekt nie może być stworzony
Java automatycznie doda konstruktor domyślny
Klasa staje się abstrakcyjna
Czy metoda w klasie może istnieć bez pól?
Tak
Nie
Czy klasa w Javie może istnieć całkowicie pusta?
Tak, kompilator doda konstruktor domyślny
Nie, musi mieć przynajmniej jedno pole
Która cecha opisuje konstruktor w Javie?
Zwraca obiekt typu klasy
Zwraca true/false po inicjalizacji
Ma nazwę identyczną jak klasa i nie zwraca żadnej wartości
Jest metodą o nazwie klasy i zwraca Boolean
Co się stanie, jeśli w klasie nie zdefiniujesz żadnego konstruktora?
Kompilator zgłosi błąd
Automatycznie powstanie konstruktor domyślny
Obiekty nie będą mogły być tworzone
Klasa stanie się abstrakcyjna
Czy konstruktor może być przeciążany?
Tak, można mieć wiele konstruktorów z różnymi parametrami
Nie, ko
Czy konstruktor może być przeciążany?
Tak, można mieć wiele konstruktorów z różnymi parametrami
Nie, konstruktor może być tylko jeden
Czy konstruktor może zwracać wartość typu int?
Tak
Nie
Co należy wpisać w miejsce ???
x = x; y = y;
this.x = x; this.y = y;
Punkt.x = x; Punkt.y = y;
super.x = x; super.y = y;
Co zostanie wypisane:
5
10
Błąd kompilacji
0
Metoda w klasie pochodnej przesłania metodę klasy bazowej. Jak odwołać się do oryginału?
this.greet();
super.greet();
A.greet();
greet.super();
Które z poniższych stwierdzeń jest prawdziwe?
Metody klasy nie mogą przyjmować argumentów.
Pola klasy przechowują stan każdego obiektu.
Zmienne lokalne są dostępne w całej klasie.
Konstruktor służy do usuwania obiektów.
Wskaż fałszywe stwierdzenie:
Konstruktory mogą mieć domyślne wartości argumentów.
Metody klasy nie mogą zwracać wartości.
Pola klasy są przypisywane zwykle w konstruktorze.
Zmienne lokalne istnieją tylko w obrębie metody, w której są zdefiniowane.
Które z poniższych stwierdzeń jest nieprawdziwe?
Metody w klasie definiują działania, które obiekty tej klasy mogą wykonywać.
Pola klasy przechowują dane i opisują stan obiektu.
Każda zmienna zdefiniowana wewnątrz metody lub konstruktora jest automatycznie polem klasy.
Konstruktor może przyjmować wiele parametrów zgodnie z definicją.
Która z poniższych metod jest poprawnym przeciążeniem?
public void printMessage() { System.out.println("Hello"); }
public void printMessage(String msg, int count) { for(int i=0;i
public int printMessage(String msg) { return msg.length(); }
public void printMessage(String msg) { System.out.println(msg); }
Która z metod jest poprawnym przeciążeniem?
public double multiply(double a, double b, double c) { return a*b*c; }
public int multiply(double x, double y) { return (int)(x*y); }
public double multiply(double x, double y) { return x*y; }
public double multiply(int x, int y) { return x*y; }
Który modyfikator ogranicza dostęp do pola klasy tak, aby było widoczne tylko wewnątrz tej klasy?
public
protected
private
static
Który modyfikator ogranicza dostęp do pola klasy tak, aby było widoczne tylko wewnątrz tej klasy?
public
protected
private
static
W Javie hermetyzacja polega na ukrywaniu pól klasy. Który modyfikator najczęściej się do tego stosuje?
final
private
abstract
synchronized
Jaki modyfikator należy wpisać w miejsce „______”, aby pole predkosc było hermetyzowane?
private
public
static
final
Który z modyfikatorów w Javie sprawia, że inne klasy nie mają bezpośredniego dostępu do zmiennej obiektu, co jest podstawą hermetyzacji?
public
protected
private
transient
Które słowo kluczowe w Javie pozwala klasie Samochod dziedziczyć po klasie Pojazd?
implements
extends
interface
inherit
Jakie słowo kluczowe należy wpisać w miejsce „______”, aby klasa Kot dziedziczyła po klasie Zwierze?
implements
extends
interface
super
Które słowo kluczowe służy do implementacji interfejsu w Javie?
extends
implements
interface
inherit
Które stwierdzenie jest prawdziwe?
extends służy do implementowania interfejsów.
implements pozwala klasie dziedziczyć po innej klasie.
extends pozwala klasie dziedziczyć po innej klasie.
interface pozwala klasie dziedziczyć po innej klasie.
Jakie słowo kluczowe należy wstawić w miejsce „______”?
extends
implements
interface
super
Który zapis poprawnie tworzy obiekt klasy Samochod?
Samochod s1 = new Samochod();
Samochod s1 = new Samochod("BMW", 2020);
Samochod s1 = new Samochod("BMW");
Samochod s1 = new Samochod(2020);
Który zapis poprawnie tworzy obiekt klasy Ksiazka?
Ksiazka k1 = new Ksiazka();
Ksiazka k1 = new Ksiazka("Pan Tadeusz");
Ksiazka k1 = new Ksiazka("Pan Tadeusz", "Mickiewicz");
Ksiazka k1 = new Ksiazka("Mickiewicz", "Pan Tadeusz");
Który zapis poprawnie tworzy obiekt?
Telefon t1 = new Telefon();
Telefon t1 = new Telefon("iPhone", 3999.99f);
Telefon t1 = new Telefon(3999.99f);
Telefon t1 = new Telefon("iPhone");
Który zapis poprawnie tworzy obiekt?
Komputer k = new Komputer();
Komputer k = new Komputer("Laptop");
Komputer k = new Komputer("Laptop", 16);
Komputer k = new Komputer(16);
Które z poniższych stwierdzeń o klasach abstrakcyjnych jest fałszywe?
Klasa abstrakcyjna może zawierać metody z implementacją.
Klasa abstrakcyjna może zawierać metody abstrakcyjne (bez ciała).
Klasa abstrakcyjna nie może mieć konstruktorów.
Nie można tworzyć bezpośrednich instancji klasy abstrakcyjnej.
Które zdanie jest prawdziwe dla klasy abstrakcyjnej w Javie?
Można utworzyć obiekt klasy abstrakcyjnej.
Klasa abstrakcyjna może implementować niektóre metody, a inne pozostawić abstrakcyjne.
Klasa abstrakcyjna nie może mieć pól prywatnych.
Klasa abstrakcyjna nie może mieć konstruktora.
Które z poniższych stwierdzeń jest prawdziwe?
Można utworzyć obiekt klasy Zwierze.
Klasa Zwierze zawiera metody abstrakcyjne i zwykłe.
Klasa Zwierze nie może mieć konstruktora.
Wszystkie metody w klasie abstrakcyjnej muszą być abstrakcyjne.
Które stwierdzenie jest fałszywe dotyczące interfejsów w Javie?
Interfejs może zawierać metody abstrakcyjne. – fałsz w Javie 8+ można mieć też metody domyślne.
Interfejs może zawierać pola (są one domyślnie publiczne, statyczne i finalne).
Interfejs można implementować w wielu klasach.
Interfejs może zawierać konstruktor.
Która z poniższych metod w klasie Pies przesłania metodę dajGlos z klasy Zwierze?
public void dajGlos() { System.out.println("Hau!"); }
public void dajGlos(String dzwiek) { System.out.println("Pies mówi: " + dzwiek); }
public String dajGlos(String dzwiek) { return dzwiek; }
public void dajGlos(int glos) { System.out.println(glos); }
Która metoda w klasie KontoOsobiste będzie poprawnie przesłaniać metodę wyswietlSaldo?
public void wyswietlSaldo() { System.out.println("Brak salda"); }
public void wyswietlSaldo(double saldo) { System.out.println("Twoje saldo: " + saldo); }
public int wyswietlSaldo(double saldo) { return (int) saldo; }
public void wyswietlSaldo(String tekst) { System.out.println(tekst); }
Która metoda w klasie Ebook jest przykładem przesłaniania metody z klasy bazowej?
public void wypiszTytul() { System.out.println("Brak tytulu"); }
public void wypiszTytul(String tytul) { System.out.println("E-book: " + tytul); }
public String wypiszTytul(String tytul) { return tytul; }
public void wypiszTytul(int liczbaStron) { System.out.println(liczbaStron); }
Która metoda w klasie Elektryczny będzie poprawnie przesłaniać metodę uruchom?
public void uruchom() { System.out.println("Uruchamianie elektrycznego"); }
public void uruchom(String model) { System.out.println("Elektryczny: " + model); }
public int uruchom(String model) { return 1; }
public void uruchom(int moc) { System.out.println(moc); }
Która z poniższych nazw nie jest oficjalną biblioteką GUI w Javie?
Swing
AWT
JavaFX
JWindowKit
Która z poniższych technologii nie służy do tworzenia graficznych interfejsów użytkownika w Javie?
Swing
JavaFX
AWT
JGraph
Które z poniższych stwierdzeń jest fałszywe?
służy do tworzenia graficznych interfejsów użytkownika w Javie?
Swing
JavaFX
AWT
JGraph
Które z poniższych stwierdzeń jest fałszywe?
Swing umożliwia tworzenie przycisków, okien i paneli w Javie.
JavaFX pozwala na animacje i grafikę 2D/3D.
AWT jest starszą biblioteką GUI w Javie.
JGUI jest standardową biblioteką GUI w Javie.
Która z poniższych nazw nie należy do standardowych bibliotek do GUI w Javie?
JavaFX
Swing
AWT
FXGraphics
Która biblioteka w Javie jest używana do tworzenia GUI:
Swing
AWT
JavaFX
NetGUI
Który z poniższych menedżerów układu w Swingu dzieli kontener na strefy NORTH, SOUTH, EAST, WEST i CENTER?
FlowLayout
BorderLayout
GridLayout
BoxLayout
W bibliotece Swing FlowLayout jest:
Menedżerem układu rozmieszczającym komponenty w jednym wierszu lub kolumnie
Obiektem tworzącym ramkę wokół okna
Menedżerem układu dzielącym kontener na pięć stref
Sposobem definiowania kolorów przycisków
Który menedżer układu w Swingu umożliwia tworzenie siatki o określonej liczbie wierszy i kolumn?
BorderLayout
FlowLayout
GridLayout
CardLayout
W Swingu menedżer układu odpowiada za:
Tworzenie okna aplikacji
Automatyczne rozmieszczanie komponentów w kontenerze
Definiowanie kolorów i czcionek przycisków
Tworzenie animacji graficznych
W Swingu zdarzenia, takie jak kliknięcie przycisku, są obsługiwane przez:
Obiekty delegowane
Obiekty nasłuchujące (Listenery)
Konstruktory zdarzeń
Obiekty typu Event
Który interfejs służy w Swingu do obsługi kliknięć przycisku?
MouseListener
KeyListener
ActionListener
WindowListener
Jak w Swingu rejestruje się obiekt nasłuchujący zdarzenia w komponencie?
Przez wywołanie konstruktora komponentu
Przez metodę addListener()
Przez metodę addActionListener() (lub podobne dla innych typów zdarzeń)
Przez bezpośrednie modyfikowanie pola zdarzeń
Które stwierdzenie jest prawdziwe?
Event w Swingu sam wywołuje akcję i wykonuje kod obsługi
Listener w Swingu czeka na zdarzenie i wywołuje określoną metodę, gdy zdarzenie wystąpi
Konstruktory zdarzeń definiują, co ma się stać po kliknięciu przycisku
Obiekty delegowane obsługują wszystkie zdarzenia automatycznie
Który z poniższych sposobów jest standardową metodą obsługi zdarzeń w Swingu?
Tworzenie klasy pochodnej komponentu i nadpisanie jego metody onClick()
Dodanie listenera do komponentu, np. addActionListener()
Modyfikacja pola event komponentu
Użycie konstruktorów zdarzeń
Jakie wymagania musi spełniać klasa w JavaFX, aby mogła uruchomić aplikację?
Dziedziczyć po klasie Application.
Posiadać metodę start(Stage primaryStage).
Dziedziczyć po klasie Scene.
Opcjonalnie używać CSS do stylizacji komponentów.
Które stwierdzenie o JavaFX jest nieprawdziwe?
Można definiować wygląd komponentów przy użyciu arkuszy stylów CSS.
Każda aplikacja musi dziedziczyć po klasie Application.
Metoda start nie jest wymagana w klasie dziedziczącej po Application.
JavaFX umożliwia tworzenie scen i scenariuszy graficznych.
Która z poniższych opcji nie jest wymogiem dla klasy JavaFX uruchamialnej jako aplikacja?
Dziedziczenie po Application.
Implementacja metody start(Stage primaryStage).
Dziedziczenie po klasie Node.
Możliwość stylizacji przy pomocy CSS.
Które stwierdzenie jest nieprawdziwe?
Klasa musi dziedziczyć po Application.
Klasa nie musi dziedziczyć po żadnej klasie.
Klasa musi posiadać metodę start.
Wygląd komponentów można zmieniać przy pomocy CSS.
Która z poniższych czynności nie jest realizowana przez JDBC?
Tworzenie połączenia z bazą danych
Wykonywanie zapytań SQL
Automatyczne mapowanie obiektów Java na tabele w bazie
Odbieranie wyników zapytań (ResultSet)
Które stwierdzenie jest prawdziwe w kontekście JDBC?
JDBC umożliwia wykonanie zapytań SQL i aktualizowanie danych w bazie
JDBC pozwala na pisanie zapytań w języku HQL
JDBC realizuje mapowanie obiektowo-relacyjne
JDBC konfiguruje adnotacje Hibernate
Które technologie realizują mapowanie obiektowo-relacyjne, a które pozwalają na wykonywanie zapytań SQL?
JDBC → SQL, Hibernate → ORM
JDBC → ORM, Hibernate → SQL
JDBC → HQL, Hibernate → SQL
JDBC → SQL, Hibernate → HQL
Która technologia w Javie realizuje powyższe funkcje?
JDBC
Hibernate
JPA
Spring Data
Jakiego typu zmienna powinna być w miejscu _________, aby przechowywać wynik zapytania SQL w JDBC?
ResultList
ResultSet
ResultMap
ResultRecord
Jakiego typu powinna być zmienna rs, aby móc iterować po wynikach zapytania?
ResultList
ResultSet
ResultMap
ResultRecord
Jakiego typu powinna być zmienna rs, aby można było wywołać metodę next()?
ResultSet
ResultList
ResultMap
ResultRecord
Jakiego typu powinna być zmienna rs, aby działała pętla while(rs.next())?
ResultSet
ResultList
ResultMap
ResultRecord
Masz kolumnę typu TIMESTAMP. Chcesz pobrać ją jako LocalDateTime i jednocześnie zachować strefę czasową z bazy. Które podejście jest poprawne?
getTimestamp("kolumna").toLocalDateTime()
getObject("kolumna", LocalDateTime.class)
getTimestamp("kolumna", Calendar.getInstance())
Wszystkie powyższe
W bazie danych jest kolumna typu NUMERIC(15,5). Chcesz pobrać wartość w taki sposób, aby zachować pełną precyzję i móc wykonywać operacje arytmetyczne w Javie bez utraty dokładności. Jaką metodę wybierasz?
getDouble("kolumna")
getBigDecimal("kolumna")
getFloat("kolumna")
getInt("kolumna")
Masz kolumnę typu BOOLEAN w bazie MySQL. W JDBC metoda getBoolean() zwraca false zarówno dla NULL, jak i dla wartości false. Jak poprawnie rozróżnić NULL od false?
getBoolean("kolumna") i potem wasNull()
getObject("kolumna", Boolean.class)
getInt("kolumna") i sprawdzenie wartości
Wszystkie powyższe
W Hibernate masz obiekt Person, który chcesz zapisać do bazy i natychmiast pobrać jego identyfikator generowany przez bazę. Która metoda Session pozwoli to zrobić najefektywniej?
session.persist(person)
session.save(person)
session.update(person)
session.merge(person)
Dlaczego w aplikacji Hibernate najlepiej tworzyć tylko jedną instancję SessionFactory zamiast tworzyć ją za każdym razem przy otwieraniu sesji?
Bo SessionFactory nie obsługuje wielu sesji równocześnie
Bo tworzenie SessionFactory jest kosztowne i wolne
Bo SessionFactory automatycznie zamyka wszystkie sesje po zakończeniu
Bo SessionFactory jest singletonem w Javie
Co się stanie, jeśli wywołasz session.save(obj) bez rozpoczętej transakcji (beginTransaction())?
Obiekt zostanie zapisany natychmiast
Hibernate zgłosi wyjątek
Obiekt nie zostanie zapisany w bazie do momentu commit transakcji
Obiekt zostanie zapisany, ale ID nie zostanie wygenerowane
Która metoda Hibernate jest bardziej efektywna, gdy potrzebujesz tylko referencji do obiektu, ale nie zamierzasz od razu odczytywać jego pól?
get()
load()
save()
merge()
W Hibernate chcesz, aby klasa Person była automatycznie powiązana z tabelą osoby, a pole id było kluczem głównym. Jak najlepiej to zrobić?
Utworzyć plik XML mapowania Person.hbm.xml lub użyć adnotacji @Entity i @Table(name="osoby")
Napisać zapytanie HQL typu FROM Person
Użyć Criteria API session.createCriteria(Person.class)
Utworzyć plik .hxml i wpisać definicję tabeli
W Hibernate chcesz, aby klasa Order była powiązana z tabelą zamowienia, a pole customerId było kolumną w tabeli. Który sposób mapowania jest poprawny?
Tworzenie zapytania HQL typu FROM Order
Użycie adnotacji @Entity, @Table(name="zamowienia") i @Column(name="customerId")
Utworzenie pliku .hxml z definicją kolumn
Użycie Criteria API session.createCriteria(Order.class)
W Hibernate chcesz, aby pole id w klasie Product było automatycznie generowane przez bazę danych. Która adnotacja najlepiej to osiąga?
@Column(autoIncrement = true)
@GeneratedValue(strategy = GenerationType.IDENTITY)
@AutoIncrement
@IdGenerator
Jeżeli chcesz, aby Hibernate sam tworzył unikalne ID w pamięci bez polegania na bazie danych, którą strategię GenerationType powinieneś wybrać?
Jeżeli chcesz, aby Hibernate sam tworzył unikalne ID w pamięci bez polegania na bazie danych, którą strategię GenerationType powinieneś wybrać?
IDENTITY
SEQUENCE
AUTO
TABLE
Masz relację jeden-do-wielu (@OneToMany) między Customer a Order. Chcesz, aby lista zamówień była ładowana dopiero przy pierwszym użyciu. Jak to osiągnąć?
@OneToMany(fetch = FetchType.LAZY)
@OneToMany(fetch = FetchType.EAGER)
@LazyCollection
session.load()
Jaka jest główna wada EAGER w relacjach kolekcji w Hibernate?
Może spowodować nadmierne pobranie danych i spowolnić aplikację
Nie pozwala na zapis encji
Nie działa z HQL
Nie można używać w relacjach ManyToOne
Jeżeli nie dodasz @Entity do klasy, ale spróbujesz ją zapisać przez Session.save(), co się stanie?
Obiekt zostanie zapisany bez problemu
Hibernate zgłosi wyjątek, że klasa nie jest encją
Hibernate automatycznie doda adnotację @Entity w runtime
Obiekt zostanie zapisany, ale tylko w pamięci, nie w bazie
Która adnotacja Hibernate/JPA pozwala określić nazwę kolumny w tabeli dla pola klasy?
@Entity
@Table
@Column(name = "nazwa_kolumny")
@Id
Jeżeli nie dodasz @Column przy polu, a nazwa pola różni się od nazwy kolumny w bazie, co się stanie?
Hibernate automatycznie dopasuje nazwę i zapisze dane poprawnie
Zostanie zgłoszony błąd mapowania
Pole zostanie zignorowane przy zapisie do bazy
Hibernate stworzy nową kolumnę w bazie
Masz klasę Customer i klasę Order. Jeden klient może mieć wiele zamówień. Która adnotacja najlepiej opisuje tę relację po stronie Customer?
@ManyToOne
@OneToMany(mappedBy = "customer")
@OneToOne
@JoinColumn
Dlaczego warto używać mappedBy w relacji @OneToMany?
Aby Hibernate automatycznie tworzył tabelę pośrednią
Aby wskazać Hibernate, która strona relacji zarządza kluczem obcym i uniknąć dodatkowej tabeli
Aby ustawić fetch na LAZY
Aby mapowanie działało bez adnotacji @Entity
W klasie Order chcesz wskazać, że każde zamówienie należy do jednego klienta (Customer). Która adnotacja jest odpowiednia?
@OneToMany
@ManyToOne
@JoinTable
@Column
Co się stanie, jeśli nie dodasz @JoinColumn przy relacji @ManyToOne?
Hibernate zgłosi wyjątek
Hibernate utworzy kolumnę domyślnie, używając nazwy pola + _id
Relacja nie będzie działać
Hibernate będzie wymagał ręcznego mapowania w XML
