Sophie

Sophie

distrib > Fedora > 18 > x86_64 > by-pkgid > b3a1f4d91c26f535919e39e25606614a > files > 1203

wt-doc-3.2.3-1.fc18.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Wt: Wt::Dbo::Transaction Class Reference</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />

<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>

</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">Wt
   &#160;<span id="projectnumber">3.2.3</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="namespaceWt.html">Wt</a>      </li>
      <li class="navelem"><a class="el" href="namespaceWt_1_1Dbo.html">Dbo</a>      </li>
      <li class="navelem"><a class="el" href="classWt_1_1Dbo_1_1Transaction.html">Transaction</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a>  </div>
  <div class="headertitle">
<div class="title">Wt::Dbo::Transaction Class Reference<div class="ingroups"><a class="el" href="group__dbo.html">Database Objects (Wt::Dbo)</a></div></div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="Wt::Dbo::Transaction" -->
<p>A database transaction.  
 <a href="classWt_1_1Dbo_1_1Transaction.html#details">More...</a></p>

<p><code>#include &lt;Wt/Dbo/Transaction&gt;</code></p>

<p>Inherited by Wt::Auth::Dbo::UserDatabase&lt; DboType &gt;::TransactionImpl.</p>

<p><a href="classWt_1_1Dbo_1_1Transaction-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Dbo_1_1Transaction.html#ad617b2cb23bc0778ad2c534e2482f74c">Transaction</a> (<a class="el" href="classWt_1_1Dbo_1_1Session.html">Session</a> &amp;session)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#ad617b2cb23bc0778ad2c534e2482f74c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Dbo_1_1Transaction.html#a5451291c5485081d047e723f9414fe88">~Transaction</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor.  <a href="#a5451291c5485081d047e723f9414fe88"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Dbo_1_1Transaction.html#ac1c956890b27b36a7e8ce664606e2af9">isActive</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the transaction is still active.  <a href="#ac1c956890b27b36a7e8ce664606e2af9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Dbo_1_1Transaction.html#a76e109abb03f00cf3ba5a5c6d84529a5">commit</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Commits the transaction.  <a href="#a76e109abb03f00cf3ba5a5c6d84529a5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Dbo_1_1Transaction.html#a071848320ad21e06890fb30d4b6b46e9">rollback</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Rolls back the transaction.  <a href="#a071848320ad21e06890fb30d4b6b46e9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classWt_1_1Dbo_1_1Session.html">Session</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Dbo_1_1Transaction.html#aba9d5c986af4d035ac3645221272e74e">session</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the session associated with this transaction.  <a href="#aba9d5c986af4d035ac3645221272e74e"></a><br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>A database transaction. </p>
<p>This class implements a RAII transaction. Most dbo manipulations require that a transaction is active, and database changes will not be committed to the database until the active transaction is committed. A transaction can be committed using <a class="el" href="classWt_1_1Dbo_1_1Transaction.html#a76e109abb03f00cf3ba5a5c6d84529a5" title="Commits the transaction.">commit()</a>, but also commits automatically when it is deleted while no exception is being thrown (using std::uncaught_exception()). This means that it is possible that the transaction destructor throws an exception in case the transaction still needs to be committed, and the commit fails. If the transaction is deleted because of stack unwinding while an exception is thrown, then the transaction rolls back.</p>
<p>A transaction is active until it is either committed or rolled back. When a transaction is rolled back or fails, the modified database objects are not successfully synchronized with the database. A roll-back does not affect the value of the in memory database objects, so they may possibly be synchronized later in a new transaction or discarded using <a class="el" href="classWt_1_1Dbo_1_1Session.html#a68d1bf89fc8a6991856b6d7992b2d14b" title="Rereads all objects.">Session::rereadAll()</a>.</p>
<p>In most occasions you will want to guard any method that touches the database using a transaction object on the stack.</p>
<p>But you may create multiple (nested) transaction objects at the same time: in this way you can guard a method with a transaction object even if it is called from another method which also defines a transaction at a wider scope. Nested transactions act in concert and reference the same logical transaction: the logical transaction will fail if at least one transaction fails, and will be committed only if all transactions are committed.</p>
<p>Usage example: </p>
<div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> doSomething(<a class="code" href="classWt_1_1Dbo_1_1Session.html" title="A database session.">Wt::Dbo::Session</a>&amp; <a class="code" href="classWt_1_1Dbo_1_1Transaction.html#aba9d5c986af4d035ac3645221272e74e" title="Returns the session associated with this transaction.">session</a>)
 {
   <a class="code" href="classWt_1_1Dbo_1_1Transaction.html" title="A database transaction.">Wt::Dbo::Transaction</a> transaction(session);

   <a class="code" href="classWt_1_1Dbo_1_1ptr.html" title="A smart pointer for a database object.">Wt::Dbo::ptr&lt;Account&gt;</a> a = session.<a class="code" href="classWt_1_1Dbo_1_1Session.html#acb4b7f2191237c16f14a3689915e164b" title="Loads a persisted object.">load</a>&lt;Account&gt;(42);
   ...

   <span class="comment">// the transaction will roll back if an exception is thrown, or</span>
   <span class="comment">// commit otherwise</span>
 }
</pre></div> </div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ad617b2cb23bc0778ad2c534e2482f74c"></a><!-- doxytag: member="Wt::Dbo::Transaction::Transaction" ref="ad617b2cb23bc0778ad2c534e2482f74c" args="(Session &amp;session)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Wt::Dbo::Transaction::Transaction </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classWt_1_1Dbo_1_1Session.html">Session</a> &amp;&#160;</td>
          <td class="paramname"><em>session</em></td><td>)</td>
          <td><code> [explicit]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constructor. </p>
<p>Opens a transaction for the given <code>session</code>. If a transaction is already open for the session, this transaction is added. All open transactions must commit successfully for the entire transaction to succeed. </p>

</div>
</div>
<a class="anchor" id="a5451291c5485081d047e723f9414fe88"></a><!-- doxytag: member="Wt::Dbo::Transaction::~Transaction" ref="a5451291c5485081d047e723f9414fe88" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Wt::Dbo::Transaction::~Transaction </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Destructor. </p>
<p>If the transaction is still active, it is rolled back. </p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a76e109abb03f00cf3ba5a5c6d84529a5"></a><!-- doxytag: member="Wt::Dbo::Transaction::commit" ref="a76e109abb03f00cf3ba5a5c6d84529a5" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool Wt::Dbo::Transaction::commit </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Commits the transaction. </p>
<p>If this is the last open transaction for the session, the session is flushed and pending changes are committed to the database.</p>
<p>Returns whether the transaction was flushed to the database (i.e. whether this was indeed the last open transaction).</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classWt_1_1Dbo_1_1Transaction.html#a071848320ad21e06890fb30d4b6b46e9" title="Rolls back the transaction.">rollback()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ac1c956890b27b36a7e8ce664606e2af9"></a><!-- doxytag: member="Wt::Dbo::Transaction::isActive" ref="ac1c956890b27b36a7e8ce664606e2af9" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool Wt::Dbo::Transaction::isActive </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns whether the transaction is still active. </p>
<p>A transaction is active unless it has been committed or rolled back.</p>
<p>While a transaction is active, new transactions for the same session are treated as nested transactions. </p>

</div>
</div>
<a class="anchor" id="a071848320ad21e06890fb30d4b6b46e9"></a><!-- doxytag: member="Wt::Dbo::Transaction::rollback" ref="a071848320ad21e06890fb30d4b6b46e9" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Wt::Dbo::Transaction::rollback </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Rolls back the transaction. </p>
<p>The transaction is rolled back (if it was still active), and is no longer active.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classWt_1_1Dbo_1_1Transaction.html#a76e109abb03f00cf3ba5a5c6d84529a5" title="Commits the transaction.">commit()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="aba9d5c986af4d035ac3645221272e74e"></a><!-- doxytag: member="Wt::Dbo::Transaction::session" ref="aba9d5c986af4d035ac3645221272e74e" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classWt_1_1Dbo_1_1Session.html">Session</a> &amp; Wt::Dbo::Transaction::session </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the session associated with this transaction. </p>
<p>This is the same session that was set in the constructor. </p>

</div>
</div>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<hr size="1"><address style="text-align: right; margin: 3px"><small>
Generated on Thu Nov 1 2012 for <a href="http://www.webtoolkit.eu/wt">the
C++ Web Toolkit (Wt)</a> by&nbsp;<a
href="http://www.doxygen.org/index.html"><img src="doxygen.png"
alt="doxygen" border="0" style="vertical-align: middle; display:
inline-block; height: 2em"></a> 1.7.5.1</small></address>
</body>
</html>