Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:modul:ffit:3-jahr:java:learningunits:lu10:b [2025/11/10 00:22] – angelegt apeter | de:modul:ffit:3-jahr:java:learningunits:lu10:b [2025/11/10 01:28] (aktuell) – apeter | ||
|---|---|---|---|
| Zeile 10: | Zeile 10: | ||
| @Setter | @Setter | ||
| public class Account { | public class Account { | ||
| + | ... | ||
| @Column(name = " | @Column(name = " | ||
| private String projectId; | private String projectId; | ||
| + | ... | ||
| } | } | ||
| </ | </ | ||
| Zeile 20: | Zeile 22: | ||
| @Setter | @Setter | ||
| public class Account { | public class Account { | ||
| + | ... | ||
| @ManyToOne | @ManyToOne | ||
| @JoinColumn(name = " | @JoinColumn(name = " | ||
| private Project project; | private Project project; | ||
| + | ... | ||
| } | } | ||
| </ | </ | ||
| </ | </ | ||
| + | | < | ||
| + | <code java> | ||
| + | String projectName = projectRepository.findById(account.getProjectId()).getProjectName(); | ||
| + | </ | ||
| + | </ | ||
| + | <code java> | ||
| + | String projectName = account.getProject().getProjectName(); | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Der " | ||
| + | Das erleichtert die Schreibweise als auch die Abhängigkeiten, | ||
| + | |||
| + | Besonders bei längeren Ketten von Entitäten, wird der Code bei der " | ||
| + | |||
| + | ==== Lazy Loading ==== | ||
| + | |||
| + | Beim " | ||
| + | |||
| + | <code java> | ||
| + | Account account = accountRepository.findById(accountId).get(); | ||
| + | String projectName = account.getProject().getProjectName(); | ||
| + | String passwordHash = account.getProject().getPasswordHash(); | ||
| + | </ | ||
| + | |||
| + | ==== References ==== | ||
| + | |||
| + | Um ein Objekt mittels einem Objekt zu suchen oder zu löschen, muss nicht das zwingend das ganze Objekte erstellt werden, sondern lediglich die Werte der Fremdschlüssel. | ||
| + | |||
| + | ^ Operation ^ Via Join ^ Via Reference-Object ^ | ||
| + | | find | < | ||
| + | <code java> | ||
| + | List< | ||
| + | </ | ||
| + | </ | ||
| + | <code java> | ||
| + | Project projectRef = entityManager.getReference(Project.class, | ||
| + | List< | ||
| + | </ | ||
| + | </ | ||
| + | | delete | < | ||
| + | <code java> | ||
| + | accountRepository.deleteByAccountNumberAndProject_ProjectName(accountNumber, | ||
| + | </ | ||
| + | </ | ||
| + | <code java> | ||
| + | Project projectRef = entityManager.getReference(Project.class, | ||
| + | accountRepository.deleteByAccountNumberAndProject(accountNumber, | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Sofern man nicht eh schon ein Project-Object beziehungsweise ein Reference-Objekt hat, ist die " | ||
| + | |||
| + | Die Reference-Objekte sind insbesondere praktisch, wenn neue Entitäten erstellt werden. Dies wird in folgendem Beispiel gezeigt. | ||
| + | |||
| + | <code java> | ||
| + | Project projectRef = entityManager.getReference(Project.class, | ||
| + | |||
| + | Account account = accountRepository | ||
| + | .findByAccountNumberAndProject(accountNumber, | ||
| + | .orElse(new Account()); | ||
| + | account.setAccountNumber(accountNumber); | ||
| + | account.setName(accountName); | ||
| + | account.setProject(projectRef); | ||
| + | accountRepository.save(account); | ||
| + | </ | ||
| + | |||
| + | |||
| - | ==== Objektorientiertes Modell ==== | ||