1 //----------------------------------------------------------------------
2 //
3 // PerfectJPattern: "Design patterns are good but components are better!"
4 // ITransaction.java Copyright (c) 2009 Giovanni Azua Garcia
5 // bravegag@hotmail.com
6 //
7 // This program is free software; you can redistribute it and/or
8 // modify it under the terms of the GNU General Public License
9 // as published by the Free Software Foundation; either version 3
10 // of the License, or (at your option) any later version.
11 //
12 // This program is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU General Public License for more details.
16 //
17 // You should have received a copy of the GNU General Public License
18 // along with this program; if not, see <http://www.gnu.org/licenses/>.
19 //
20 //----------------------------------------------------------------------
21 package org.perfectjpattern.jee.api.integration.dao;
22
23 import org.perfectjpattern.core.api.structural.adapter.*;
24
25 /**
26 * Abstract definition of Transaction available for the DAO implementation.
27 * The DAO API exposes this interface but it will be automatically adapted
28 * from the underlying JPA-specific implementation (see {@link IAdapter}).
29 * <br/><br/>
30 * JPA and specific implementations define similar abstractions e.g.
31 * Transaction but despite their similarities, their types actually
32 * mismatch making it difficult to provide a generic unified DAO
33 * solution.
34 * <br/><br/>
35 * Note that this is a subset of the functionality that the underlying
36 * implementation offers. This is the subset required to make the DAO
37 * portable. If required, it is possible to get the underlying
38 * implementation using {@link ISession#getDelegate()}
39 *
40 * @author <a href="mailto:bravegag@hotmail.com">Giovanni Azua</a>
41 * @version $Revision: 1.0 $Date: Feb 10, 2009 5:56:17 PM $
42 */
43 public
44 interface ITransaction
45 {
46 //------------------------------------------------------------------------
47 // public
48 //------------------------------------------------------------------------
49 /**
50 * Demarcates the beginning of a Transaction
51 *
52 * @throws DaoException
53 * @throws UnsupportedOperationException Transactions are not supported by
54 * the underlying persistent store.
55 * @see #isSupported()
56 */
57 public void
58 begin()
59 throws DaoException, UnsupportedOperationException;
60
61 //------------------------------------------------------------------------
62 /**
63 * Commits the current Transaction
64 *
65 * @throws DaoException
66 * @throws UnsupportedOperationException Transactions are not supported
67 * by the underlying persistent store.
68 * @see #isSupported()
69 */
70 public void
71 commit()
72 throws DaoException, UnsupportedOperationException;
73
74 //------------------------------------------------------------------------
75 /**
76 * Rolls back the current Transaction
77 *
78 * @throws DaoException
79 * @throws UnsupportedOperationException Transactions are not supported by
80 * the underlying persistent store.
81 * @see #isSupported()
82 */
83 public void
84 rollback()
85 throws DaoException, UnsupportedOperationException;
86
87 //------------------------------------------------------------------------
88 /**
89 * Returns true if the transaction currently Active, false otherwise
90 *
91 * @return true if the transaction currently Active, false otherwise
92 */
93 public boolean
94 isActive();
95 }