Spring Erweitern von Entities

Diskutiere Erweitern von Entities im Application Tier Forum; Hallo Ihr! Ich hätte mal eine Frage zum Best Practice beim Erweitern von Persistente Entities im Zusammenhang mit Spring MVC. Insbesondere bei...

  1. Marsman
    Marsman Neues Mitglied
    Hallo Ihr!

    Ich hätte mal eine Frage zum Best Practice beim Erweitern von Persistente Entities im Zusammenhang mit Spring MVC. Insbesondere bei einer Collection von Entities.

    Angenommen ich habe eine List<Image>, übergebe diese durch den Controller im Response (ModelAndView) an eine JSP. Dort wird diese Liste mit dem JSTL-Tag c:forEach ausgegeben. Soweit wie üblich. Nun soll je Bild noch eine URL ausgegeben werden, die sich aus Properties von Image und einer konfigurierten Basis-URL zusammensetzt. Diese möchte ich nicht auf der JSP (im View) zusammensetzen.

    Wie geht man nun am Besten vor? Spontan fällt mir ein, eine Wrapper-Klasse für Image zu erstellen, dort eine Methode getImageUrl() zu implementieren und im Controller List<Image> zu List<ImageWrapper> zu kopieren. Oder von Image zu erweitern. Dabei habe ich aber Probleme mit dem Persistence-Framework bekommen. Gibt es bessere Lösungen? Idealerweise Spring-konform. Wie wird so etwas in der Praxis realisiert?

    Code (Java):

    public class ImageWrapper {

      private Image image;

      @Autowired
      private SeoService seoService;

      public String getImageUrl() {
        return this.seoService.getImageUrl(image.getTitle());
      }
    }
     
    HTML:

    <c:forEach var="imageWrapper"> items="${imageWrappers}">
      <img src="${imageWrapper.imageUrl}" alt="${imageWrapper.image.title}" />
    </c:forEach>
     
    Danke, Thomas
     
  2. Vielleicht hilft dir dieser Kurs hier weiter --> (hier klicken)
  3. Marsman
    Marsman Neues Mitglied
    Schade, keine Antwort. War meine Frage zu blöd oder zu kompliziert?

    Im Grunde geht es mir darum, in meiner Web App eine Bean programmatisch zu instanziieren und in dieser Bean auf Services zugreifen zu können, die von Spring injected werden. Und falls möglich per Annotationen. Ich habe etwas über ApllicationContext und BeanFactory gelesen, komme da aber nicht richtig weiter.

    Gruß, Thomas
     
  4. stg
    stg Bekanntes Mitglied
    Beim "normalen" JPA kannst du zusätzliche Attribute/Methoden mit der Annotation
    Code (Text):
    @Transient
    versehen, diese werden dann nicht persistiert und einfach "überlesen". Mit Spring gibt es bestimmt was Vergleichbares.
     
  5. Marsman
    Marsman Neues Mitglied
    ...das mit dem @Transient kenne ich. Ich möchte meine zusätzlichen Getter nicht in der Entity-Klasse selbst platzieren. Wenn ich von der Entity-Klasse erweitere (ImageWrapper extends Image), weiß ich nicht wie ich ImageWrapper instanziieren soll.

    Code (Java):

    public class ImageWrapper extends Image {

      @Autowired
      private SeoService seoService;
     
      @Transient
      public String getImageUrl() {
        return this.seoService.getImageUrl(image.getTitle());
      }
    }
     
    Gruß, Thomas
     
  6. Marsman
    Marsman Neues Mitglied
    Hallo nochmal,

    ich habe inzwischen selbst eine akzeptable Lösung gefunden. Mit einer Annotated Bean Factory und Beans im Prototype Scope.

    Gruß, Thomas
     
Die Seite wird geladen...

Erweitern von Entities - Ähnliche Themen

Polibios Array erweitern
Polibios Array erweitern im Forum Allgemeine Java-Themen
Java Kenntnisse erweitern...
Java Kenntnisse erweitern... im Forum Java Basics - Anfänger-Themen
JavaFX Shapes (Line) erweitern
JavaFX Shapes (Line) erweitern im Forum AWT, Swing, JavaFX & SWT
Wie kann ich Brute Force Methode mit Strings erweitern
Wie kann ich Brute Force Methode mit Strings erweitern im Forum Java Basics - Anfänger-Themen
Befehl zum Kompilieren um die Option classpath erweitern.
Befehl zum Kompilieren um die Option classpath erweitern. im Forum Java Basics - Anfänger-Themen
Thema: Erweitern von Entities