1 / 9

Data transfer object (DTO)

Data transfer object (DTO). Data transfer object – úvod. Problém Každé volání vzdáleného rozhraní je nákladná operace. Příklad : Přenášení dat mezi servisní vrstvou a uživatelským rozhraním Jak na to? Použít jednoduché třídy pro přenos více dat při každém volání.

Download Presentation

Data transfer object (DTO)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Data transfer object (DTO)

  2. Data transfer object – úvod • Problém • Každé volání vzdáleného rozhraní je nákladná operace. • Příklad: • Přenášení dat mezi servisní vrstvou a uživatelským rozhraním • Jak na to? • Použít jednoduché třídy pro přenos více dat při každém volání. • Známý také jako: Value Object, Transfer Object

  3. Data transfer object – příklad Data transfer object Klient Přenášený objekt

  4. Data transfer object – účastníci • Klient(Client) • Reprezentuje kontrolér aplikace • Data transfer object (ValueObject) • Serializovatelný objekt • Obsahuje pouze proměnné a jejich gettery a settery • Business object • Perzistentní objekt z databáze

  5. Data transfer object – špatný postup • Pro přenos dat není vhodné používat entity (business objekty) • Transakční kontext končí na servisní vrstvě • Zabezpečení volání metod je také na servisní vrstvě • Odhalení vnitřního rozhraní aplikace • Entity nelze přenést do jiné VM – injektované závislosti neprojdou serializací a deserializací (nullpointer exception)

  6. Data transfer object – jak na to • Jak na to • Servisní vrstva vrací jednoduché třídy pro přenos dat • Obsahují pouze proměnné a jejich gettery a settery • V případě referencí obsahují pouze ID • Kód těchto tříd lze bez problému poskytnout

  7. Data transfer object – implementace public class PhotoDto extends AbstractDto { private Long offer; private String link; public PhotoDto() { } public PhotoDto(Long id, Long offer, String link) { this.id = id; this.offer = offer; this.link = link; } public String getLink() { return link; } public Long getOffer() { return offer; } public void setLink(String link) { this.link = link; } public void setOffer(Long offer) { this.offer = offer; } } • Ukázka dto

  8. Data transfer object – použití • Ukázka tvorby dto • Hibernate tools public PhotoDto getPhotoById(Long id) { Photo p = genericDao.getByPropertyUnique("id", id, Photo.class); return new PhotoDto(p.getId(), HibernateTools.getIdentifier(p.getOffer()), p.getLink()); } public static Long getIdentifier(AbstractBusinessObject o) { if (o == null) { return null; } Long id = null; if (o instanceof HibernateProxy) { id = (Long) ((HibernateProxy) o).getHibernateLazyInitializer().getIdentifier(); } else { id = o.getId(); } return id; }

  9. Data transfer object – nevýhody • Nevýhody • Značná duplikace kódu mezi DTO a entitami • V servisní vrstvě je nutný kód navíc pro převod z entit a jejich seznamů na ID

More Related