De nekem row lock kell: csak az adott sorral ne szórakozzon senki, a többi sort lehet szerkeszteni.<br><br>Most azon gondolkodom, hogy oracle alatt a dbms_lock-kal létrehozok egy lockot: myapplock[rowid] néven, és amikor másik session akar lokkolni, akkor ellenőrzi az ilyen id-jű foglalás meglétét: ha nem sikerül lokkolni, akkor keressen magának másik elfoglaltságot ;)<br>
<br>Egy-egy folyamat percekig is eltarthat (extrém esetben órák), ilyenkor fontos, hogy azért más feladat tudjon haladni. Mivel ilyen hosszú időről beszélünk, és a folyamat közben lehet (van) commit is, ezért nem állíthatom be, hogy a tranzakció végén automatikusan oldja a lokkot, azt nekem kell manuálisan a folyamat végén. Ez OK, de mi van akkor, ha egy kliens elszáll? Ilyenkor a lock megmarad, de nem lesz senki, aki feloldja. Tehát kell valami takarító mechanizmus is....<br>
<br>Vagy simán csak megmondom, hogy egyszerre csak egy klienst futtassanak? ;) (nem kéne...)<br clear="all"><br>Üdv:<br><b>Vig Balázs<br></b><br><br><br>
<br><br><div class="gmail_quote">2012. szeptember 14. 12:15 Keresztes Jozsef írta, <span dir="ltr">&lt;<a href="mailto:jkeresztes@vati.hu" target="_blank">jkeresztes@vati.hu</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div link="blue" vlink="purple" lang="HU"><div><p class="MsoNormal"><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;">Vagyis konkrétan ezt kell csinálni:<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><u></u> <u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Courier;color:blue;background:white" lang="EN-US">lock</span><span style="background:white;font-size:10.0pt;font-family:&quot;Courier New&quot;" lang="EN-US"> </span><span style="font-size:10.0pt;font-family:Courier;color:blue;background:white" lang="EN-US">table</span><span style="background:white;font-size:10.0pt;font-family:&quot;Courier New&quot;" lang="EN-US"> szemafor </span><span style="font-size:10.0pt;font-family:Courier;color:blue;background:white" lang="EN-US">in</span><span style="background:white;font-size:10.0pt;font-family:&quot;Courier New&quot;" lang="EN-US"> </span><span style="font-size:10.0pt;font-family:Courier;color:blue;background:white" lang="EN-US">exclusive</span><span style="background:white;font-size:10.0pt;font-family:&quot;Courier New&quot;" lang="EN-US"> </span><span style="font-size:10.0pt;font-family:Courier;color:blue;background:white" lang="EN-US">mode;</span><span style="background:white;font-size:10.0pt;font-family:&quot;Courier New&quot;" lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="background:white;font-size:10.0pt;font-family:&quot;Courier New&quot;" lang="EN-US">update table_a …;<u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none">
<span style="background:white;font-size:10.0pt;font-family:&quot;Courier New&quot;" lang="EN-US">insert into table_b …;<u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span style="background:white;font-size:10.0pt;font-family:&quot;Courier New&quot;" lang="EN-US">…<u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Courier;color:blue;background:white" lang="EN-US">commit;<u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none">
<span style="font-size:10.0pt;font-family:Courier;color:blue;background:white" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Courier;color:blue;background:white" lang="EN-US">Jelöljetek ki egy táblát (a példában “szemafor”), de lehet máshogy is…<u></u><u></u></span></p>
<div class="im"><p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Courier;color:blue;background:white" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal" style="text-autospace:none">
<span style="font-size:10.0pt;font-family:Courier;color:blue;background:white" lang="EN-US">Joe</span><span style="background:white;font-size:10.0pt;font-family:&quot;Courier New&quot;" lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><u></u> <u></u></span></p>
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">From:</span></b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;"> Vig, Balázs [mailto:<a href="mailto:balazs.vig@datasolutions.hu" target="_blank">balazs.vig@datasolutions.hu</a>] <br>
<b>Sent:</b> Friday, September 14, 2012 12:05 PM<br><b>To:</b> Java lista<br><b>Subject:</b> [Javalist] Adatbázis lock<u></u><u></u></span></p><p class="MsoNormal"><u></u> <u></u></p></div><p class="MsoNormal" style="margin-bottom:12.0pt">
Sziasztok!</p><div><div class="h5"><br><br>Van egy Hibernate alapú kliensem, ami több példányban is futhat. A kliens feladata, hogy az adatbázis objektumokon műveleteket végezzen.<br>Hogyan lehet azt garantálni, hogy egy objektummal csak az egyik kliens foglalkozhasson: ha az egyik már elkezdett dolgozni rajta, akkor másik már ne tudjon.<br>
<br>Támogatja-e ezt valahogy a hibernate, vagy a jdbc? (eddig nem találtam erre semmit). Vagy nekem kell valami mókolnom az adatbázisban?<br clear="all"><br>Üdv:<br><b>Vig Balázs<br><br></b><u></u><u></u></div></div><p></p>
</div></div><br>_______________________________________________<br>
Javalist mailing list<br>
<a href="mailto:Javalist@lists.javaforum.hu">Javalist@lists.javaforum.hu</a><br>
<a href="http://lists.javaforum.hu/mailman/listinfo/javalist" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><br>
<br></blockquote></div><br>