1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Hibernate Session Scope

  • mkdigital
  • 29. Juli 2008 um 09:40
  • Unerledigt
  • mkdigital
    10
    mkdigital
    Mitglied
    Reaktionen
    6
    Punkte
    1.036
    Beiträge
    162
    • 29. Juli 2008 um 09:40
    • #1

    Hallo!

    Kennt sich jemand mit Hibernate Sessions aus?

    Angenommen ich habe den folgenden Code:

    Code
    Session s1=HibernateFactory.openSession(); 
          Session s2=HibernateFactory.openSession(); 
    
          System.out.println(s1.hashCode()); 
          System.out.println(s2.hashCode()); 
    
          Transaction t1=s1.beginTransaction(); 
          Transaction t2=s2.beginTransaction(); 
    
          Pojo p1=new Pojo(); 
    
          Integer id=(Integer)s1.save(p1); 
    
          s2.get(Pojo.class, id);
    Alles anzeigen

    2 Verschiedene (lt. hashCode) Sessions und 2 Transaktions.

    Dass sollte doch die letzte Zeile NULL zurückgeben, weil s1 ja noch nicht committed hat! In meinem Fall gibt er aber wieder p zurück. Hab ich da was falsch verstanden? Ich dachte jede Session hat ihren eigenen Scope?

    http://twoday.tuwien.ac.at/mkdigitalhttps://twitter.com/sigsegvat

  • maitscha
    8
    maitscha
    Mitglied
    Punkte
    560
    Beiträge
    83
    • 29. Juli 2008 um 10:53
    • #2

    eventuell hollst du dir 2x die selbe session? was macht denn HibernateFactory.openSession()?

    lg, chr.

  • mkdigital
    10
    mkdigital
    Mitglied
    Reaktionen
    6
    Punkte
    1.036
    Beiträge
    162
    • 29. Juli 2008 um 13:50
    • #3

    nein, ruft von org.hibernate.SessionFactory folgendes auf:

    Code
    public static Session openSession(){
                return sessionFactory.openSession();
            }

    naja was sagst du: sessions müssten doch gegenseitig ihre uncommiteten daten nicht sehen oder seh ich das falsch??

    http://twoday.tuwien.ac.at/mkdigitalhttps://twitter.com/sigsegvat

  • kubuntu
    6
    kubuntu
    Mitglied
    Reaktionen
    2
    Punkte
    352
    Beiträge
    65
    • 29. Juli 2008 um 20:46
    • #4

    Welches Datenbankbackend verwendest du? Mysql-InnoDB (default in Windows) unterstuetzt Transactions, Mysql-MyISAM (default in Linux) unterstuetzt keine Transactions. Wenn du MyISAM verwendest hat der Code der die Transactions betrifft keine Wirkung.


  • mkdigital
    10
    mkdigital
    Mitglied
    Reaktionen
    6
    Punkte
    1.036
    Beiträge
    162
    • 29. Juli 2008 um 21:40
    • #5

    hsqldb -> unterstützt auch keine

    aber das was du schreibst stimtm nicht, rollback funktioniert.

    meine frage war einfach grundsätzlich ob hibernate selbst die sessions nicht trennt. aber offenbar hängt es von den unterstützten isolation levels ab

    http://twoday.tuwien.ac.at/mkdigitalhttps://twitter.com/sigsegvat

  • kubuntu
    6
    kubuntu
    Mitglied
    Reaktionen
    2
    Punkte
    352
    Beiträge
    65
    • 29. Juli 2008 um 22:03
    • #6

    Siehe hsqldb Documentation:

    Zitat

    HSQLDB supports transactions at the READ_UNCOMMITTED level, also known as level 0 transaction isolation. This means that during the lifetime of a transaction, other connections to the database can see the changes made to the data

    Das sollte ja deine Frage beantworten.


  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Tags

  • hibernate
  • transactions

Rechtliches

Impressum

Datenschutzerklärung