tutorials.de-Buchverschenkaktion 08/2010
+ Auf Thema antworten
  1. #1
    Nobody Nobody ist offline Mitglied Bronze Nobody hat eine blütenweiße Weste
    Registriert seit
    May 2009
    Beiträge
    43
    Hiho,

    ich habe einen Beispielcode der mir via sessioncatory, service und DAO aus einem Criteria objekt einen query formt... das hab ich auch soweit verstanden (denke ich)

    Leider sind in diesem beispiel Zwar auch setter (setUsername beispielsweise) in der entsprechenden Klasse (entity) enthalten jedoch kein beispiel wie ich dies nutze.

    Ich hab diverse beispiele gefunden die andere wege gehen um ein "Insert" auszuführen aber jedesmal wird das ganze anders implementiert was sehr irritierend für mich ist, daher die frage ob mir jemand ein beispiel hierzu geben könnte...

    aktueller aufbau(das wichtigste in auszügen):

    Application.java
    PHP-Code:
    myUser service.getUser(userpass); 
    applicationServiceImpl.java(Service)

    PHP-Code:
            try {
                
    // Return the result of the data access call.
                
    return repository.getUser(userpass); 
    applicationRepositoryImpl.java(DAO)

    PHP-Code:
    public User getUser(String userString pass) {
            
    // Ask Hibernate to query for the user based upon the specified user/pass.
            
    Criteria crit sessionFactory.getCurrentSession().createCriteria(User.class);
            
    crit.add(Restrictions.eq("userName"user));
            
    crit.add(Restrictions.eq("password"pass));
            
    User myUser = (Usercrit.uniqueResult(); 
    dazu kommt die klasse User und halt noch die Springbeans...

    wie nutze ich nun zum beispiel die Methode "setUserName" in der Klasse User Richtig und vor allem Effizient weil mir fehlt irgendwo der Bezug zwischen User klasse und der getUser Methode aus applicationRepositoryImpl.?

    Ich hoffe ihr kommt mit den auszügen klar und könnt mir da helfen, thx schonmal

    mfg

  2. #2
    Nobody Nobody ist offline Mitglied Bronze Nobody hat eine blütenweiße Weste
    Registriert seit
    May 2009
    Beiträge
    43
    Ich habe bei einer Webapplikation folgende Kontruktion(aus einem beispiel code):

    User.class wird via annotations mit spring2 für die mySQL table 'users' verwendet

    von meiner 'application.class' wird über einen Service ( org.springframework.stereotype.Service, org.springframework.transaction.annotation.Transactional) auf die DAO klasse zugegriffen in welcher mittels Hibernate Sessionfactory,Criteria,creterion und restriction dann ein query geformt wird welcher mir aus der Klasse User (table users) einfach nur einen User raussuchen soll...

    Das ganze ist der Login für die Webappliktion und funktioniert auch soweit.

    Nun zur Frage(n):

    1) wozu dienen die Methoden wie 'getUserName' , 'getPassword', 'setUserName'... u.s.w. welche in der Klasse User zu finden sind wenn diese nirgendwo in der JavaApplikation aufgerufen werden?

    2) in der DAO file finde ich eine Methode 'setSessionFactory' genauso wie ich in der 'Service+ Annotation.class' file eine Methode 'setApplicationRepository' Methode Existiert, beide werden ebenso nirgendwo aufgerufen, sind das Hibernate interne Sachen oder wozu sind sie Da?

    3) ist es Natürlich schön das das Auslesen der Informationen schonmal soweit klappt, aber wie befülle ich die Tabelle, meinetwegen wenn sich ein User neu regestriert (lassen wir mal die übliche email validierung und dergleichen weg) geht dies auch über die DAO file oder spreche ich dann die unter Frage 1 auch genannten Setter Funktionen in der Klasse User direkt an?



    Bei dem Beispiel-Code handelt es sich um die hier :

    http://sziebert.net/posts/red5-hibernate-revisited/

    zu findende Implementierung von Hibernate in einen bestehenden Mediaserver.


    Ich bin für jede hilfreiche Antwort dankbar

    mfg
    Geändert von Nobody (15.05.09 um 06:49 Uhr)

  3. #3
    Nobody Nobody ist offline Mitglied Bronze Nobody hat eine blütenweiße Weste
    Registriert seit
    May 2009
    Beiträge
    43
    Thx an die Mods fürs zusammen fassen und verschieben in den richtigen bereich und sorry wegen des Doppelposts

    mfg

  4. #4
    Benutzerbild von Oliver Gierke
    Oliver Gierke Oliver Gierke ist offline Mitglied Rubin Oliver Gierke ist ein Lichtblick Oliver Gierke ist ein Lichtblick Oliver Gierke ist ein Lichtblick
    Registriert seit
    Dec 2003
    Ort
    Mannheim
    Beiträge
    1.457
    Huiuiui... was mir ein wenig Angst macht, ist, dass anhand deiner Fragen offensichtlich wird, dass du dir da schön Code zusammenkopiert hast, aber es noch arg an Grundlagen zu Spring und Hibernate fehlt.

    Punkt 1: Security codet man nicht selbst . Wenn du Spring hast, lohnt ein Blick auf Spring Security. Hierfür ist aber ein gewisses Grundverständnis von Spring notwendig. Methodisch ist dein vorgehen ebenfalls suboptimal. Im Normalfall lädt man nicht den User anhand des Usernamens und des Passworts sonder einfach nur anhand des Namens, gibt den an das Authentifikationssubsystem zurück und läst dies entscheiden, ob ein evtl. vorhandenes Passwort den gefundenen User matcht.

    Zitat Zitat von Nobody Beitrag anzeigen
    1) wozu dienen die Methoden wie 'getUserName' , 'getPassword', 'setUserName'... u.s.w. welche in der Klasse User zu finden sind wenn diese nirgendwo in der JavaApplikation aufgerufen werden?
    Gegenfrage: kennst du das Java Beans Konzept?

    2) in der DAO file finde ich eine Methode 'setSessionFactory' genauso wie ich in der 'Service+ Annotation.class' file eine Methode 'setApplicationRepository' Methode Existiert, beide werden ebenso nirgendwo aufgerufen, sind das Hibernate interne Sachen oder wozu sind sie Da?
    Du erbst von HibernateDaoSupport. Das ist eine Springklasse. Das zentrale Konzept von Spring ist Dependency Injection. Setterinjection nutzt eben Settermethoden dafür. D.h. die Methoden werden von Spring gerufen und dienen dazu Abhängigkeiten explizit zu machen.

    3) ist es Natürlich schön das das Auslesen der Informationen schonmal soweit klappt, aber wie befülle ich die Tabelle, meinetwegen wenn sich ein User neu regestriert (lassen wir mal die übliche email validierung und dergleichen weg) geht dies auch über die DAO file oder spreche ich dann die unter Frage 1 auch genannten Setter Funktionen in der Klasse User direkt an?
    DAO File? In wieweit hast du dich schon mit Persistenz in Java beschäftigt? Weist du was ein DAO ist?

    Gruß
    Ollie
    In theory, there is no difference between theory and practice. In practice, there is!

    www.olivergierke.de

  5. #5
    Nobody Nobody ist offline Mitglied Bronze Nobody hat eine blütenweiße Weste
    Registriert seit
    May 2009
    Beiträge
    43
    Zitat Zitat von Oliver Gierke Beitrag anzeigen
    Huiuiui... was mir ein wenig Angst macht, ist, dass anhand deiner Fragen offensichtlich wird, dass du dir da schön Code zusammenkopiert hast, aber es noch arg an Grundlagen zu Spring und Hibernate fehlt.
    Das Kompliment muss ich weiterreichen an den Author des Tutorials aus dessen Feder der gesammte Quelltext stammt (siehe folgenden link):

    http://sziebert.net/posts/red5-hibernate-revisited/


    Zitat Zitat von Oliver Gierke Beitrag anzeigen
    Punkt 1: Security codet man nicht selbst . Wenn du Spring hast, lohnt ein Blick auf Spring Security. Hierfür ist aber ein gewisses Grundverständnis von Spring notwendig. Methodisch ist dein vorgehen ebenfalls suboptimal. Im Normalfall lädt man nicht den User anhand des Usernamens und des Passworts sonder einfach nur anhand des Namens, gibt den an das Authentifikationssubsystem zurück und läst dies entscheiden, ob ein evtl. vorhandenes Passwort den gefundenen User matcht.


    Gegenfrage: kennst du das Java Beans Konzept?
    Ich weiss das meine Kenntnisse in bezeichneter Sache recht mikrig sind und nein das Konzept kenn ich nicht bzw. ich bin genötigt es zu benutzen aber erklären könnte ich es nicht
    Zitat Zitat von Oliver Gierke Beitrag anzeigen
    Du erbst von HibernateDaoSupport. Das ist eine Springklasse. Das zentrale Konzept von Spring ist Dependency Injection. Setterinjection nutzt eben Settermethoden dafür. D.h. die Methoden werden von Spring gerufen und dienen dazu Abhängigkeiten explizit zu machen.


    DAO File? In wieweit hast du dich schon mit Persistenz in Java beschäftigt? Weist du was ein DAO ist?
    Ein Data Access Object... wenn ichs mir erklären müsste würd ich sagen "sowas wie ein Object das für den Inhalt eines Anderen Objectes oder in diesem Falle eines Datensatzes steht (also sowas wie eine refferenzierung)"

    Deine Antwort sagt mir das du nicht wirklich unter dem oben genannten Link nachgeschaut hast oder nur die hälfte gelesen...

    Wie dem auch Seie, wenns um Sachen geht in denen ich der Spezi bin empfehle ich auch immer die Hilfe zu lesen und bins selber gewöhnt mir im Quelltext anzuschauen "wo wird auf was verwiesen" und "wo wird was aufgerufen"... meine Kentnisse stützen sich auf oben genanntes, in meinen Augen leider schlecht dokumentierte, Beispiel sowie die Grundkenntnisse die man nach ca 8 Jahren Programmierung in ECMA4 script sprachen haben sollte, dennoch möchte sicherlich wissen wie man es besser machen kann womit jedoch wieder 3 Monate lernen verbunden wäre solange mir keiner nen Tritt in die Richtige Richtung verpasst und aktuell ist es mir halt wichtiger das es erstmal läuft damit ich weitermachen kann und nicht den Sinn und somit das Ziel vor Augen verliere!

    Später werde ich durch das mittels "learning by doing" erworbene Wissen in das eh benötigte Refractoring zum Optimieren und ggf. völligen überarbeiten des Codes mit einfliessen lassen.

    Da ich bei diesen Geschichten vollens auf Beispiele angewiesen bin und nicht einmal weiss ob die rangehensweise das Optimale rausholt ist es für mich halt wichtig erstmal was lauffähiges zu haben mit dem ich Arbeiten kann.

    Wenn Du oben besagtem Link folgst hast du meinen Kenntnissstand zudem versuche ich mich über dieses googlebuch:

    http://books.google.com/books?id=mGW...esult&resnum=9

    in die ganze Geschichte rein zu lesen...

    Sorry ich nehme an das ich wahrscheinlich schon viel Mist in dem Beitrag geschrieben habe aber manchmal kann man halt nicht warten bis man alles verstanden hat sondern muss es sehen um es zu begreifen und sich dann selber nen reim drauf machen.

    mfg
    Sascha

  6. #6
    Benutzerbild von Oliver Gierke
    Oliver Gierke Oliver Gierke ist offline Mitglied Rubin Oliver Gierke ist ein Lichtblick Oliver Gierke ist ein Lichtblick Oliver Gierke ist ein Lichtblick
    Registriert seit
    Dec 2003
    Ort
    Mannheim
    Beiträge
    1.457
    Zitat Zitat von Nobody Beitrag anzeigen
    Das Kompliment muss ich weiterreichen an den Author des Tutorials aus dessen Feder der gesammte Quelltext stammt (siehe folgenden link):

    http://sziebert.net/posts/red5-hibernate-revisited/
    Das eine hat doch mit dem anderen nichts zu tun. Der Kollege aus dem Blog gibt ein Beispiel dafür wie man Red5 mit Spring und Hibernate verbindet. D.h. nicht, dass das der Weisheit letzter Schluss ist oder gar Best practices entspricht. Es entspricht den Bedürfnissen eines Beispiels, nicht undbedingt den eines guten Loginhandlings. Aber wir schweifen ab. Der Hinweis war ja auch nur methodisch... Auch das was ich hier schreibe ist nicht in Stein gemeißelt. Es ist mir nur aufgefallen...

    Ich weiss das meine Kenntnisse in bezeichneter Sache recht mikrig sind und nein das Konzept kenn ich nicht bzw. ich bin genötigt es zu benutzen aber erklären könnte ich es nicht
    Ich wollte dir mit meinem Post auch nicht sagen "Du bist blöd und das zeig ich dir jetzt..." sondern eher ausdrücken, dass es für mich als Antwortenden nur möglich ist die Fragen zu beantworten, wenn ein gewisses Grundverständnis auf deiner Seite vorhanden ist. Sonst schreiben wir alle hier irgendwann Romane . Die Gegenfragen sind also rhetorischer Natur und sollen dazu anregen sich in dise Richtungen weiter zu informieren. Wenn du dem Hinweis mit den JavaBeans z.B. folgst, wirst du erfahren, dass das ein Pattern aus der Javawelt ist, damit Kapselung betrieben wird und in JSP z.B. über die EL darauf zugegriffen werden kann (${user.username}). Die Divergenz zwischen scheinbar trivialen Fragen (wozu sd die Getter da?) und sehr abstrakten (was macht ein DAO) macht es für die Antwortenden einfach unheimlich schwer zu antworten. Verweis ich auf das Grundlagenforum (JavaBeans) oder auf eine Webseite mit komplexen Architekturthemen?

    Soviel Metadiskussion . Hier noch etwas mehr "Fleisch"...

    Ein Data Access Object... wenn ichs mir erklären müsste würd ich sagen "sowas wie ein Object das für den Inhalt eines Anderen Objectes oder in diesem Falle eines Datensatzes steht (also sowas wie eine refferenzierung)"
    Data Access Object ist ein Pattern um Persistenzlogik von Geschäftslogik zu trennen. http://de.wikipedia.org/wiki/Data_Access_Object

    Deine Antwort sagt mir das du nicht wirklich unter dem oben genannten Link nachgeschaut hast oder nur die hälfte gelesen...
    Die Aussage kann ich nicht nachvollziehen? Du hast versucht mit ein wenig Beispielcode relativ unreflektiert auf dein Problem zu schlagen. Dabei treten natürlich einige Verständnisfragen auf. Die jetzt aber wieder mit Beispielcode zu erschlagen, halte ich für wenig sinnvoll. Zumal ich auch nicht wirklich sehe wie man auf die Fragen mit Beispielcode sinnvoll antworten könnte.

    Wenn Du oben besagtem Link folgst hast du meinen Kenntnissstand...
    Nochmal - da ist Beispielcode. Der sagt nichts darüber aus, was DU dazu weißt. Ergo sollten meine Gegenfragen der Klarstellung dienen, was gemau man dir eben noch erklären sollte.

    Sinde die Fragen denn jetzt soweit geklärt? 1. sollte klar sein, 2. auch (die eigentlich relevante Info war ja: wird von Spring gerufen). Zu 3.: Speichernde Aufrufe genauso durch den Service ans DAO weiterleiten und dort über die Session ablegen.

    Gruß
    Ollie
    In theory, there is no difference between theory and practice. In practice, there is!

    www.olivergierke.de

  7. #7
    Nobody Nobody ist offline Mitglied Bronze Nobody hat eine blütenweiße Weste
    Registriert seit
    May 2009
    Beiträge
    43
    Zitat Zitat von Oliver Gierke Beitrag anzeigen
    Die Divergenz zwischen scheinbar trivialen Fragen (wozu sd die Getter da?) und sehr abstrakten (was macht ein DAO) macht es für die Antwortenden einfach unheimlich schwer zu antworten.
    kurz nochmal hierzu...

    Die Frage war eher so gemeint das mir zwar bewusst ist welchen Sinn und Zweck get'er und set'er in der OOP Welt einnehmen, ich jedoch keine Verbindung zu dem im Beispiel verwandten Code ziehen konnte, da ich keinen Aufruf dieser Methoden fand.
    Zitat Zitat von Oliver Gierke Beitrag anzeigen
    Nochmal - da ist Beispielcode. Der sagt nichts darüber aus, was DU dazu weißt. Ergo sollten meine Gegenfragen der Klarstellung dienen, was gemau man dir eben noch erklären sollte.

    Sinde die Fragen denn jetzt soweit geklärt? 1. sollte klar sein, 2. auch (die eigentlich relevante Info war ja: wird von Spring gerufen). Zu 3.: Speichernde Aufrufe genauso durch den Service ans DAO weiterleiten und dort über die Session ablegen.

    Gruß
    Ollie
    Danke schonmal hast mir sehr geholfen, zu 3 hätte ich jedoch noch eine Frage, undzwar habe ich hier ein wohl auch recht simples Beipiel über das befüllen einer DB Tabelle gefunden:

    http://www.roseindia.net/hibernate/i...database.shtml

    wo mir aber wieder etwas fehlt da hier die set Funktionen der der SQL Table entsprechenden Klasse (in meinem Fall wäre es User bei dem Link gerade ist es der Studentdetail) direkt aus der Klasse "HibernateNativeInsert" heraus aufgerufen werden... wäre es sinnvoll erstmal hiermit zu Arbeiten oder schlägst du mir eine andere rangehensweise vor, falls ja bitte hinweis auf eine Klasse / Methode die ich ergooglen kann, danke?

    mfg
    Sascha

  8. #8
    Benutzerbild von Oliver Gierke
    Oliver Gierke Oliver Gierke ist offline Mitglied Rubin Oliver Gierke ist ein Lichtblick Oliver Gierke ist ein Lichtblick Oliver Gierke ist ein Lichtblick
    Registriert seit
    Dec 2003
    Ort
    Mannheim
    Beiträge
    1.457
    Das Beispiel zeigt, wie man Hibernate mit Nativem SQL verwendet. Das macht man allerdings nur in Ausnahmefällen. Es reicht eigenlich je nach Kontext saveOrUpdate oder merge auf der hibernate Session zu rufen.

    Gruß
    Ollie
    In theory, there is no difference between theory and practice. In practice, there is!

    www.olivergierke.de

  9. #9
    Nobody Nobody ist offline Mitglied Bronze Nobody hat eine blütenweiße Weste
    Registriert seit
    May 2009
    Beiträge
    43
    Zitat Zitat von Oliver Gierke Beitrag anzeigen
    Es reicht eigenlich je nach Kontext saveOrUpdate oder merge auf der hibernate Session zu rufen.
    cool thx

    Danke nochmal

    mfg
    Sascha

Ähnliche Themen

  1. Hibernate Annotations
    Von drezze im Forum Java
    Antworten: 0
    Letzter Beitrag: 28.11.08, 08:36
  2. Spring 2.5.5 JBoss 4.2.2 Hibernate-Annotations (Dringend !)
    Von Smokey67 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 5
    Letzter Beitrag: 21.09.08, 18:47
  3. Hibernate: Mapping-Annotations an Member anstatt an Getter-Methoden?
    Von DarthShader im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 9
    Letzter Beitrag: 23.04.08, 15:26
  4. Hibernate hat Probleme mit Annotations
    Von Tobias Köhler im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 13
    Letzter Beitrag: 27.03.08, 15:46
  5. Antworten: 4
    Letzter Beitrag: 09.12.07, 14:15

Lesezeichen

Lesezeichen