Database Abstraction Layer



  • Warum finest du Hibernate "nicht so prickelnd"? Was spricht in deinen Augen dagegen?
    Wie würdest du es mit den Interfaces realisieren? Kann mir das im Augenblick noch nicht so richtig vorstellen.

    Was ich evtl noch hinzufügen muss: Es geht weniger darum Daten in die Datenbank zu schreiben, sondern mehr darum die Daten heraus zu bekommen.

    Danke,
    Basti



  • Hibernate ist noch eine zusätzliche "aufwendige" Zwischenschicht und braucht auch noch etwas Zeit. Hibernate scheint auch gerade ein bisschen ein Hype zu sein, was aber nicht zwangsläufig heißen muss, dass es schlecht ist.

    Das mit dem Interface ist eigentlich ganz einfach. Du machst dir ein Interface für die Zugriffe.
    z.B:

    public interface IDBAccess {
         public MyData readData(String ID);
    ...
    }
    

    Das implementierst du dann für die DB. Diese Implementierung ist dann die einzige Klasse in der SQL steht. An allen Stellen an denen du auf die DB zugreifst verwendest du das Interface und schreibst kein SQL mehr hin. Wenn du dir die Implementierung z.B. immer über eine Factory zurückgeben lässt, dann kannst du die auch ganz einfach austauschen.

    public class DBAccessFactory {
        public static IDBAccess getAccess() {
             return new MySQLDBAccessImpl();
        }
    }
    
    ...
    // DB Zugriff
    IDBAccess access = DBAccessFactory.getAccess();
    MyData data = access.read("ASDAS");
    


  • Vielen Dank für die Info 🙂



  • Ist ja schön und gut, aber hat mit der eigentlichen Fragestellung wenig zu tun. Denn bei nem DB Wechsel muss im Zweifel eine neue IDBAccess implementiert werden.

    Bei Hibernate brauchst Du gar kein SQL mehr sondern mapst direkt Deine Java-Objekte auf die Daten in der DB. Die Statements schreibt man dann mit HQL und ist somit gänzlich unabhängig von der eingesetzten DB. Außerdem kommt Hibernate direkt mit guten Konzepten in Sachen Skalierbarkeit und Sicherheit (Stichwort Sessions und Transactions).

    Nicht nachvollziehbar, warum manche Leute sowas heutzutage noch "zu Fuß" machen. Ich kanns nur auf Faulheit zurückführen, sich in neue Frameworks einzuarbeiten.



  • byto schrieb:

    Ist ja schön und gut, aber hat mit der eigentlichen Fragestellung wenig zu tun. Denn bei nem DB Wechsel muss im Zweifel eine neue IDBAccess implementiert werden.

    Sehr unwahrscheinlich, weil die meisten DBs den gleichen SQL Standard verstehen.

    Nicht nachvollziehbar, warum manche Leute sowas heutzutage noch "zu Fuß" machen. Ich kanns nur auf Faulheit zurückführen, sich in neue Frameworks einzuarbeiten.

    Genau 🙄. Performance vielleicht. Hibernate ist fast immer 2 bis 10 mal so langsam.
    http://polepos.sourceforge.net/results/html/bahrain_delete.html
    http://polepos.sourceforge.net/results/html/index.html
    Außerdem ist das ja auch nicht das selbe nochmal zu Fuß, sondern kommt ohne ne zusätzliche Sprache wie HQL aus.



  • fsdlakj schrieb:

    Sehr unwahrscheinlich, weil die meisten DBs den gleichen SQL Standard verstehen.

    Schon mal z.B. LIMIT verwendet?

    byto schrieb:

    Nicht nachvollziehbar, warum manche Leute sowas heutzutage noch "zu Fuß" machen.
    Ich kanns nur auf Faulheit zurückführen, sich in neue Frameworks einzuarbeiten.

    Seh ich auch so. Noch dazu wird dann mit so einem nichtsaussagenen Benchmark argumentiert. 🙄

    fsdlakj schrieb:

    Genau 🙄. Performance vielleicht. Hibernate ist fast immer 2 bis 10 mal so langsam.
    http://polepos.sourceforge.net/results/html/bahrain_delete.html
    http://polepos.sourceforge.net/results/html/index.html
    Außerdem ist das ja auch nicht das selbe nochmal zu Fuß, sondern kommt ohne ne zusätzliche Sprache wie HQL aus.

    Bitte schau dir Hibernate mal genauer an und dann reden wir nochmal, ok?

    ms



  • OK Hibernate ist das beste wo gibt.



  • fsdlakj schrieb:

    OK Hibernate ist das beste wo gibt.

    Das ist genauso eine schwachsinnige Pauschalierung wie oben.

    ms



  • ms schrieb:

    fsdlakj schrieb:

    OK Hibernate ist das beste wo gibt.

    Das ist genauso eine schwachsinnige Pauschalierung wie oben.

    Stimmt, wie diese, dass man es nicht nimmt, weil man zu faul ist sich in ein Framework einzuarbeiten.



  • irgendwie bin ich dumm 😕



  • es geht hier um ORM und du kommst mit sowas?

    write, query, update and delete simple flat objects individually

    sehr aussagekräftig... 🙄



  • $ schrieb: > es geht hier um ORM und du kommst mit sowas? > > > > write, query, update and delete **simple flat objects** individually > > > > sehr aussagekräftig... 🙄 http://polepos.sourceforge.net/results/html/barcelona_delete.html writes, reads, queries and deletes objects with a 5 level inheritance structure besser? Findet ihr das normal, dass es bis zu 10 mal so lang braucht, wenn man hibernate nimmt? Normal sind die Datenbankzugriffe das Aufwendige und nicht das Mapping.


  • Gibts zu diesem Vergleich vielleicht irgendwo eine detaillierte Beschreibung und Code?

    ms

    [Edit]
    Gefunden: http://sourceforge.net/project/showfiles.php?group_id=134549



  • fsdlakj schrieb:

    Findet ihr das normal, dass es bis zu 10 mal so lang braucht, wenn man hibernate nimmt? Normal sind die Datenbankzugriffe das Aufwendige und nicht das Mapping.

    hibernate stinkt ja auch 😃


Anmelden zum Antworten