AccountBMPBean.java
上传用户:dinglihq
上传日期:2013-02-04
资源大小:99958k
文件大小:7k
源码类别:

Java编程

开发平台:

Java

  1. package examples.dualpersistent;
  2. import java.io.Serializable;
  3. import java.util.*;
  4. import javax.ejb.*;
  5. import javax.naming.*;
  6. import java.sql.*;
  7. import javax.sql.*;
  8. public class AccountBMPBean extends AccountCMPBean implements EntityBean
  9. {
  10.     private String accountId;
  11.     private double balance;
  12.     public String getAccountId()
  13.     {
  14.         return accountId;
  15.     }
  16.     public double getBalance()
  17.     {
  18.         return balance;
  19.     }
  20.     public void setAccountId(String val)
  21.     {
  22.         this.accountId = val;
  23.     }
  24.     public void setBalance(double val)
  25.     {
  26.         this.balance = val;
  27.     }
  28.     public String ejbCreate(String accountId, double initialBalance) throws CreateException
  29.     {
  30.         //delegate to super class for validation checks, etc.
  31.         super.ejbCreate(accountId, initialBalance);
  32.         Connection con = null;
  33.         PreparedStatement ps = null;
  34.         try
  35.         {
  36.             con = getConnection();
  37.             ps = con.prepareStatement("insert into Accounts (id, balance) values (?, ?)");
  38.             ps.setString(1, accountId);
  39.             ps.setDouble(2, balance);
  40.             if (ps.executeUpdate() != 1)
  41.             {
  42.                 throw new CreateException();
  43.             }
  44.             return accountId;
  45.         } catch (SQLException sqe)
  46.         {
  47.             throw new CreateException();
  48.         } finally
  49.         {
  50.             try
  51.             {
  52.                 if (ps != null) ps.close();
  53.                 if (con != null) con.close();
  54.             } catch (Exception e)
  55.             {
  56.                 throw new EJBException(e);
  57.             }
  58.         }
  59.     }
  60.     public Collection ejbFindBigAccounts(double balanceGreaterThan)
  61.     {
  62.         Connection con = null;
  63.         PreparedStatement ps = null;
  64.         try
  65.         {
  66.             con = getConnection();
  67.             ps = con.prepareStatement("select id from Accounts where balance > ?");
  68.             ps.setDouble(1, balanceGreaterThan);
  69.             ps.executeQuery();
  70.             ResultSet rs = ps.getResultSet();
  71.             Vector v = new Vector();
  72.             String pk;
  73.             while (rs.next())
  74.             {
  75.                 pk = rs.getString(1);
  76.                 v.addElement(pk);
  77.             }
  78.             return v;
  79.         } catch (SQLException e)
  80.         {
  81.             throw new EJBException(e);
  82.         } finally
  83.         {
  84.             try
  85.             {
  86.                 if (ps != null) ps.close();
  87.                 if (con != null) con.close();
  88.             } catch (Exception e)
  89.             {
  90.                 throw new EJBException(e);
  91.             }
  92.         }
  93.     }
  94.     public String ejbFindByPrimaryKey(String pk) throws ObjectNotFoundException
  95.     {
  96.         Connection con = null;
  97.         PreparedStatement ps = null;
  98.         try
  99.         {
  100.             con = getConnection();
  101.             ps = con.prepareStatement("select balance from Accounts where id = ?");
  102.             ps.setString(1, pk);
  103.             ps.executeQuery();
  104.             ResultSet rs = ps.getResultSet();
  105.             if (rs.next())
  106.                 balance = rs.getDouble(1);
  107.             else
  108.                 throw new ObjectNotFoundException();
  109.         } catch (SQLException sqe)
  110.         {
  111.             throw new EJBException(sqe);
  112.         } finally
  113.         {
  114.             try
  115.             {
  116.                 if (ps != null) ps.close();
  117.                 if (con != null) con.close();
  118.             } catch (Exception e)
  119.             {
  120.                 System.out.println("Error closing JDBC resourcest: " + e);
  121.                 throw new EJBException(e);
  122.             }
  123.         }
  124.         return pk;
  125.     }
  126.     public void ejbLoad()
  127.     {
  128.         Connection con = null;
  129.         PreparedStatement ps = null;
  130.         accountId = (String) ctx.getPrimaryKey();
  131.         try
  132.         {
  133.             con = getConnection();
  134.             ps = con.prepareStatement("select balance from Accounts where id = ?");
  135.             ps.setString(1, accountId);
  136.             ps.executeQuery();
  137.             ResultSet rs = ps.getResultSet();
  138.             if (rs.next())
  139.                 balance = rs.getDouble(1);
  140.             else
  141.                 throw new NoSuchEntityException();
  142.         } catch (SQLException sqe)
  143.         {
  144.             throw new EJBException(sqe);
  145.         } finally
  146.         {
  147.             try
  148.             {
  149.                 if (ps != null) ps.close();
  150.                 if (con != null) con.close();
  151.             } catch (Exception e)
  152.             {
  153.                 System.out.println("Error closing JDBC resourcest: " + e);
  154.                 throw new EJBException(e);
  155.             }
  156.         }
  157.     }
  158.     public void ejbPostCreate(String accountId, double initialBalance)
  159.     {
  160.     }
  161.     public void ejbRemove()
  162.     {
  163.         Connection con = null;
  164.         PreparedStatement ps = null;
  165.         try
  166.         {
  167.             con = getConnection();
  168.             accountId = (String) ctx.getPrimaryKey();
  169.             ps = con.prepareStatement("delete from Accounts where id = ?");
  170.             ps.setString(1, accountId);
  171.             if (!(ps.executeUpdate() > 0))
  172.             {
  173.                 throw new NoSuchEntityException();
  174.             }
  175.         } catch (SQLException e)
  176.         {
  177.             throw new EJBException(e);
  178.         }
  179.     }
  180.     public void ejbStore()
  181.     {
  182.         Connection con = null;
  183.         PreparedStatement ps = null;
  184.         try
  185.         {
  186.             con = getConnection();
  187.             ps = con.prepareStatement("update Accounts set balance = ? where id = ?");
  188.             ps.setDouble(1, balance);
  189.             ps.setString(2, accountId);
  190.             if (!(ps.executeUpdate() > 0))
  191.                 throw new NoSuchEntityException();
  192.         } catch (SQLException sqe)
  193.         {
  194.             throw new EJBException(sqe);
  195.         } finally
  196.         {
  197.             try
  198.             {
  199.                 if (ps != null) ps.close();
  200.                 if (con != null) con.close();
  201.             } catch (Exception e)
  202.             {
  203.                 System.out.println("Error closing JDBC resourcest: " + e);
  204.                 throw new EJBException(e);
  205.             }
  206.         }
  207.     }
  208.     private Connection getConnection() throws SQLException
  209.     {
  210.         InitialContext ctx = null;
  211.         try
  212.         {
  213.             ctx = new InitialContext();
  214.             DataSource ds = (javax.sql.DataSource)
  215.                     ctx.lookup("ejbPool");
  216.             return ds.getConnection();
  217.         } catch (NamingException e)
  218.         {
  219.             throw new EJBException(e);
  220.         }
  221.     }
  222. }