basic Flashcards

1
Q

hvad er JPA (Java Persistence API)?

A

Et sæt regler (en standard), der beskriver, hvordan Java-objekter skal mappes til database-tabeller og omvendt.
JPA udfører ikke noget selv – den kræver en ORM (som Hibernate) til at gøre arbejdet

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Hvad er Rest API?

A

‘Et stateless interface’
Et REST API lader klienter og servere udveksle data via HTTP med metoder som GET, POST, PUT og DELETE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Hvad er Generics?

A

bruger en typeparameter (T) i klassen/metoden og erstatter den med en konkret datatype ved brug

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

One to One relationer

A

en række i en tabel er knyttet til præcis én række i en anden tabel

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

CommandLineRunner

A

Spring Boot-interface, der kører kode én gang ved opstart af applikationen. Bruges ofte i InitData til at indsætte testdata i databasen automatisk.
Kan bruges til opstartslogik, f.eks. konfiguration eller logging.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Hvad er Hibernate?

A

En konkret implementering af JPA, som gør det muligt at gemme, hente og håndtere data i en database ved at mappe Java-objekter til database-tabeller.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Cirkulære referencer

A

X refererer til Y, og Y refererer tilbage til X. Dette kan skabe uendelige loops.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Hvordan sikres Data-integritet?

A

sikres ved constraints

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Hvad er et Functional interface?

A

Et interface med et enkelt abstrakt metode (kan have flere default- eller static-metoder)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Hvad gør @JsonBackReference?

A

Forhindrer uendelige loops i JSON-serialisering, når to objekter refererer til hinanden. Brug på “forældre”-siden af relationen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Hvad står JSON for, og hvad bruges det til?

A

‘JavaScript Object Notation’

Et letvægtigt dataformat, der bruges til at udveksle data mellem systemer.

Bruges ofte i API’er og webapplikationer til at sende og modtage data.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Hvilke to hovedstrukturer er JSON baseret på?

A
  1. Objekter – en samling af navn/værdi-par
  2. Arrays – en ordnet liste af værdier
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

RestTemplate

A

Det er en klasse, der bruges til at lave HTTP-anmodninger (GET, POST, PUT, DELETE) til eksterne API’er.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Hvornår bruger man create-drop/ update?

A

Update = når man ikke vil miste sine data

Create drop = når data skal resettes hver gang applikationen starter

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Hvad må man ikke når man skal navngive endpoints?

A

Ingen brug af verber(udsagnsord), dvs ingen “getX” “postX”…

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

mappedBy betyder:

A

THE MOTHER (forældren)
“Jeg er den passive part – kig på ‘region’ i ‘Kommune’ for at finde relationen.

Den side, der har @OneToMany, har @MappedBy, fordi den ikke ejer relationen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Hvad tager .forEach() som parameter i Java?

A

.forEach() tager en lambda-udtryk eller en funktion (Consumer) som parameter, der definerer, hvad der skal gøres med hvert element i en samling.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Hvad er Optional i Java, og hvornår bruges det?

A

en container, der kan indeholde en værdi eller være tom.
Bruges til at undgå NullPointerException, især når en metode kan returnere null, f.eks. ved databaseopslag som findById(kode)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

hvad er: var obj =

A

betyder, at Java automatisk bestemmer typen af obj baseret på den værdi, du tildeler den.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Hvad er forskellen mellem abstract class og interface?

A

abstract class → Kan have både implementeret og ikke-implementeret kode.
interface → Kan kun have metode-signaturer (før Java 8), men kan have default/statisk metoder efter Java 8.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Hvad er forskellen på @Controller og @RestController?

A

@Controller → Returnerer en HTML-side via Thymeleaf.
@RestController → Returnerer JSON-data (REST API).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Hvornår bruges @PathVariable?

A

Når en værdi er en del af URL’en.
Bruges til at hente dynamiske værdier fra stien.
GET /brugere/5 → “Bruger ID: 5”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Hvornår bruges @RequestParam?

A

Når en værdi sendes som en forespørgselsparameter i URL’en.
Bruges typisk til valgfri parametre eller filtrering.
GET /søg?navn=Zuhur → “Søger efter: Zuhur”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Hvad er @Transactional, og hvorfor bruges det?

A

Bruges i Spring Boot til at sikre, at databaseoperationer er atomare.
Hvis en fejl opstår, rulles transaktionen tilbage.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Hvad gør @Column i JPA?

A

Kan bruges til at annotere navn, type eller længde på kolonnen i databasen, hvis man vil have noget andet end default genereret.

@Column(length = 4)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Hvad gør @OneToOne(mappedBy = “x”)?

A

Fortæller, at denne side af relationen IKKE ejer relationen.
Fremmednøglen opbevares i den anden entitet under navnet “x”.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Hvad gør @JoinColumn?

A

Angiver hvilken kolonne der fungerer som fremmednøgle i en relation.

28
Q

Hvad gør @Entity?

A

Markerer en klasse som en JPA-entitet, så den repræsenterer en tabel i databasen.

29
Q

Hvad gør @Id?

A

Markerer et felt som primærnøgle i en JPA-entitet.

30
Q

Hvad gør @Component?

A

Registrerer en klasse som en Spring Bean, så Spring kan administrere den automatisk.

31
Q

Hvad gør @Autowired?

A

Injicerer automatisk afhængigheder i en klasse, så man ikke behøver at oprette objekter manuelt.

32
Q

Hvad gør @RestController?

A

Bruges til at bygge REST API’er.
Returnerer JSON/XML i stedet for HTML (kombinerer @Controller + @ResponseBody).

33
Q

Hvad gør cascade = CascadeType.ALL?

A

Hvis en forælder fjernes, fjernes alle tilknyttede “børn” i databasen.

34
Q

Hvad gør @SpringBootTest?

A

Starter hele Spring Boot-applikationen til test, så man kan teste afhængigheder og Beans.
Bruges ofte sammen med @MockBean for at mocke afhængigheder.

35
Q

Hvad gør @DataJpaTest?

A

Kører kun tests med JPA (uden at starte hele Spring Boot).
Bruger en H2-database (in-memory test database).

36
Q

Hvad er forskellen på == og .equals()?

A

== sammenligner objektreferencer (om de er den samme instans).
.equals() sammenligner indholdet af to objekter.

37
Q

Hvad er @CrossOrigin, og hvornår bruges den?

A

bruges til at give en frontend (fx React eller Angular) lov til at snakke med din backend i Spring Boot.

38
Q

Hvad er ResponseEntity, og hvad bruges det til?

A

ResponseEntity er en klasse i Spring Boot, der bruges til at returnere HTTP-svar fra en REST API.
Giver kontrol over statuskoder (fx 200 OK, 404 Not Found, 400 Bad Request).
Kan returnere JSON-data, fejlbeskeder eller tekst.
Hjælper med at håndtere fejl korrekt i API’er.

39
Q

Hvad er @RequestBody, og hvad bruges det til?

A

bruges i Spring Boot til at modtage data fra frontend (fx JavaScript, React, Postman) og omdanne det til et Java-objekt.
Når en bruger sender data via en POST eller PUT anmodning, hjælper @RequestBody med at konvertere JSON-data til et Java-objekt, så det kan bruges i backenden.

40
Q

Hvad er @Getter og @Setter?

A

Lombok-annotationer, der automatisk genererer getter- og setter-metoder for alle felterne i en klasse.

41
Q

Hvad gør @GeneratedValue(strategy = GenerationType.IDENTITY)?

A

bruges i Spring Boot/JPA til at gøre en primær nøgle (@Id) automatisk genereret i databasen.

42
Q

Hvad gør cascade = CascadeType.REMOVE?

A

sørger for, at hvis en forælder-entitet slettes, så slettes alle dens tilknyttede “børn” automatisk.

43
Q

Hvad bruges orphanRemoval = true til?

A

fjerner automatisk “forældreløse” objekter, dvs. hvis et barn ikke længere er tilknyttet en forælder, bliver det også slettet fra databasen.

44
Q

hvad viser dette:
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = “school_id”, referencedColumnName = “id”)
private School school; // Hver student er tilknyttet én skole

A

Viser en Many-to-One relation mellem Student og School.

@JoinColumn(name = “school_id”) betyder, at Student-tabellen har en fremmednøgle school_id, der refererer til id i School.
fetch = FetchType.EAGER betyder, at School bliver hentet med det samme, når en Student hentes.
Uden EAGER (default LAZY) ville student.getSchool() være nødvendigt for at hente School

45
Q

Hvad er fetch(), og hvad bruges det til?

A

en JavaScript-metode, der bruges til at hente data fra en server via HTTP-anmodninger.
Den kan bruges til at sende GET, POST, PUT og DELETE anmodninger til en backend.
fetch() returnerer et Promise, som enten returnerer et svar (response) eller en fejl (error).

46
Q

Hvad er DOMContentLoaded, og hvornår bruges det?

A

en JavaScript-event, der trigger, når hele HTML-dokumentet er indlæst, men før billeder og CSS er loadet.

47
Q

Hvad betyder relationen mellem Kommune og Region i følgende kode?
@Entity
public class Kommune {

@Id
@Column(length = 4)
private String kode;
private String navn;
private String href;

@ManyToOne
@JoinColumn(name = "region", referencedColumnName = "kode", nullable = false)
private Region region; }
A

Viser en Many-to-One relation, hvor mange Kommune-objekter kan være knyttet til én Region.

@ManyToOne betyder, at hver kommune hører til én region.
@JoinColumn(name = “region”, referencedColumnName = “kode”) gør, at Kommune har en fremmednøgle (region), som refererer til kode i Region.
En kommune SKAL have en region, fordi nullable = false.

48
Q

Hvad betyder relationen mellem Region og Kommune i følgende kode?
@Entity
public class Region {
@Id
@Column(length = 4)
private String kode;
@Column(nullable = false)
private String navn;
private String href;

@OneToMany(cascade = CascadeType.ALL, mappedBy = "region")
@JsonBackReference
private Set<Kommune> kommuner = new HashSet<>(); }
A

Viser en One-to-Many relation, hvor én Region kan have mange Kommune-objekter.

@OneToMany(mappedBy = “region”) betyder, at Region har en liste af Kommuner.
CascadeType.ALL betyder, at hvis en Region slettes, slettes alle dens Kommuner også.
@JsonBackReference forhindrer uendelige loops, når JSON data serialiseres.

49
Q

Hvad er funktionel programmering?

A

En måde at skrive kode på, hvor man bruger funktioner uden sideeffekter, og hvor data ikke ændres (immutability).

50
Q

Hvad er en “ren funktion” (pure function)?

A

En funktion der altid giver det samme resultat, når du giver den det samme input – og som ikke ændrer noget udenfor sig selv.

51
Q

Hvad betyder “immutability”?

A

Det betyder, at data ikke må ændres. Hvis du vil ændre noget, laver du en ny kopi i stedet.

52
Q

Hvad er et lambda-udtryk?

A

En kort måde at skrive en funktion uden navn. F.eks. x -> x + 1.

53
Q

Hvad er et funktionelt interface?

A

Et interface med præcis én metode. Det kan bruges sammen med lambda.
@FunctionalInterface interface MyFunc {
void doSomething();
}

54
Q

Hvordan kan man sende en funktion som argument i Java?

A

Ved at bruge et funktionelt interface og en lambda som parameter.

55
Q

Hvad er et “Consumer” interface?

A

Det er et funktionelt interface der tager én input og ikke returnerer noget.
Eksempel: Consumer<String> print = s -> System.out.println(s);</String>

56
Q

Hvad er et “Predicate”?

A

Et funktionelt interface der tager én input og returnerer true eller false.
Eksempel: Predicate<Integer> isEven = x -> x % 2 == 0;</Integer>

57
Q

Hvad er en Stream i Java?

A

En måde at arbejde med en liste (eller anden datastruktur) trin for trin – f.eks. filtrere, ændre, sortere osv.

58
Q

Hvad gør map() i en Stream?

A

Den ændrer (transformerer) hvert element og giver en ny liste.
Eksempel: Gør alle navne store: list.stream().map(String::toUpperCase)

59
Q

Hvad gør filter() i en Stream?

A

Den fjerner de elementer, der ikke opfylder en betingelse.
Eksempel: list.stream().filter(n -> n > 5)

60
Q

Hvad gør flatMap()?

A

Den tager en liste af lister og flader den ud til én samlet liste.

61
Q

Hvad gør forEach()?

A

Den udfører en handling på hvert element – f.eks. udskriver det.
⚠️ Den returnerer ikke noget nyt.

62
Q

Hvad er forskellen på forEach() og map() i JavaScript?

A
  • forEach = gør noget (fx print) på hvert element, men returnerer ikke noget.
  • map = laver et nyt array med ændrede værdier.
63
Q

Hvad betyder “internal iterator”?

A

Det betyder, at du ikke selv styrer løkken. Du siger bare “gør dette på hvert element”, fx med map().

64
Q

Hvordan kæder man flere funktioner sammen i Java?

A

Med .andThen() – den ene funktion kører efter den anden.