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

Java编程

开发平台:

Java

  1. package bible.ejb.entity.bmp;
  2. import javax.ejb.*;
  3. import java.sql.*;
  4. import javax.sql.DataSource;
  5. import javax.naming.InitialContext;
  6. import java.util.Collection;
  7. import java.util.Vector;
  8. public class StudentEJB implements EntityBean
  9. {
  10.   private EntityContext context;
  11.   private static final String DATASOURCE
  12.     = "java:comp/env/jdbc/connectionPool";
  13.   public String id;
  14.   public String firstName;
  15.   public String lastName;
  16.   public String eMailAddr;
  17.   public String phone;
  18.   public String ssNum;
  19.   public void setEntityContext(EntityContext ec) {
  20.     context = ec;
  21.   }
  22.   public void unsetEntityContext() {
  23.     this.context = null;
  24.   }
  25.   public StudentPK ejbCreate(StudentVO student)
  26.       throws CreateException
  27.   {
  28.     this.id = student.getId();
  29.     setStudentData(student);
  30.     Connection con = null;
  31.     PreparedStatement ps = null;
  32.     StudentPK key = null;
  33.     try {
  34.       con = getConnection();
  35.       ps = con.prepareStatement("insert into STUDENT (ID,FIRST_NAME, LAST_NAME, EMAIL_ADDR, PHONE, SSNUM) values (?, ?, ?, ?, ?, ?)");
  36.       ps.setString(1, id);
  37.       ps.setString(2, firstName);
  38.       ps.setString(3, lastName);
  39.       ps.setString(4, eMailAddr);
  40.       ps.setString(5, phone);
  41.       ps.setString(6, ssNum);
  42.       int ret = ps.executeUpdate();
  43.       if (ret != 1) {
  44.         throw new CreateException("Create failed");
  45.       }
  46.       key = new StudentPK();
  47.       key.id = id;
  48.       return key;
  49.     }
  50.     catch (Exception e) {
  51.       throw new CreateException(e.getMessage());
  52.     }
  53.     finally {
  54.       cleanup(con, ps);
  55.     }
  56.   }
  57.   public void ejbPostCreate(StudentVO student) {
  58.   }
  59.   public void ejbLoad()
  60.   {
  61.     StudentPK key = (StudentPK)context.getPrimaryKey();
  62.     try {
  63.       readData(key);
  64.     }
  65.     catch(Exception e) {
  66.       throw new EJBException(e.getMessage());
  67.     }
  68.   }
  69.   public void ejbStore()
  70.   {
  71.     Connection con = null;
  72.     PreparedStatement ps = null;
  73.     try {
  74.       con = getConnection();
  75.       StudentPK key =
  76.         (StudentPK)context.getPrimaryKey();
  77.       ps = con.prepareStatement("update STUDENT set FIRST_NAME = ?,LAST_NAME = ?,EMAIL_ADDR = ?,PHONE = ?,SSNUM = ? where ID = ?");
  78.       ps.setString(1, firstName);
  79.       ps.setString(2, lastName);
  80.       ps.setString(3, eMailAddr);
  81.       ps.setString(4, phone);
  82.       ps.setString(5, ssNum);
  83.       ps.setString(6, key.id);
  84.       int ret = ps.executeUpdate();
  85.       if (ret == 0) {
  86.         throw new EJBException("ejbStore failed");
  87.       }
  88.     }
  89.     catch (Exception e) {
  90.       throw new EJBException(e.getMessage());
  91.     }
  92.     finally {
  93.       cleanup(con, ps);
  94.     }
  95.   }
  96.   public void ejbRemove() throws RemoveException
  97.   {
  98.     Connection con = null;
  99.     PreparedStatement ps = null;
  100.     try {
  101.       con = getConnection();
  102.       StudentPK key =
  103.           (StudentPK) context.getPrimaryKey();
  104.       ps = con.prepareStatement("delete from STUDENT where ID=?");
  105.       ps.setString(1, key.id);
  106.       int result = ps.executeUpdate();
  107.       if (result == 0) {
  108.         throw new RemoveException("Remove failed");
  109.       }
  110.     }
  111.     catch (Exception e) {
  112.       throw new RemoveException(e.getMessage());
  113.     }
  114.     finally {
  115.       cleanup(con, ps);
  116.     }
  117.   }
  118.   public void ejbActivate() {
  119.   }
  120.   public void ejbPassivate() {
  121.   }
  122.   public StudentPK ejbFindByPrimaryKey(StudentPK key)
  123.       throws FinderException
  124.   {
  125.     try {
  126.       readData(key);
  127.       return key;
  128.     }
  129.     catch (Exception e) {
  130.       throw new FinderException(e.getMessage());
  131.     }
  132.   }
  133.   public StudentPK ejbFindBySSNum(String ssNum)
  134.     throws FinderException
  135.   {
  136.     Connection con = null;
  137.     PreparedStatement ps = null;
  138.     try {
  139.       con = getConnection();
  140.       ps = con.prepareStatement("select ID, FIRST_NAME,LAST_NAME,EMAIL_ADDR,PHONE,SSNUM from STUDENT where SSNUM = ?");
  141.       ps.setString(1, ssNum);
  142.       ResultSet rs = ps.executeQuery();
  143.       if (!rs.next()) {
  144.         throw new FinderException("Record not found");
  145.       }
  146.       else {
  147.         loadAttributes(rs);
  148.       }
  149.       rs.close();
  150.       StudentPK key = new StudentPK();
  151.       key.id = id;
  152.       return key;
  153.     }
  154.     catch (Exception e) {
  155.       throw new EJBException(e.getMessage());
  156.     }
  157.     finally {
  158.       cleanup(con, ps);
  159.     }
  160.   }
  161.   public Collection ejbFindByLastName(String lastName)
  162.     throws FinderException
  163.   {
  164.     Connection con = null;
  165.     PreparedStatement ps = null;
  166.     try {
  167.       con = getConnection();
  168.       ps = con.prepareStatement("select ID from STUDENT where LAST_NAME = ?");
  169.       ps.setString(1, lastName);
  170.       ResultSet rs = ps.executeQuery();
  171.       Vector students = new Vector();
  172.       StudentPK key = null;
  173.       while (rs.next()) {
  174.         key = new StudentPK();
  175.         key.id = rs.getString(1);
  176.         students.addElement(key);
  177.       }
  178.       rs.close();
  179.       return students;
  180.     }
  181.     catch (Exception e) {
  182.       throw new FinderException(e.getMessage());
  183.     }
  184.     finally {
  185.       cleanup(con, ps);
  186.     }
  187.   }
  188.   private void loadAttributes(ResultSet rs)
  189.       throws SQLException
  190.   {
  191.     id = rs.getString(1);
  192.     firstName = rs.getString(2);
  193.     lastName = rs.getString(3);
  194.     eMailAddr = rs.getString(4);
  195.     phone = rs.getString(5);
  196.     ssNum = rs.getString(6);
  197.   }
  198.   private void cleanup(Connection con, PreparedStatement ps)
  199.   {
  200.     try {
  201.       if (ps != null) {
  202.         ps.close();
  203.       }
  204.       if (con != null) {
  205.         con.close();
  206.       }
  207.     }
  208.     catch (Exception e) {
  209.       throw new EJBException (e);
  210.     }
  211.   }
  212.   public StudentVO getStudentData()
  213.   {
  214.     StudentVO student = new StudentVO();
  215.     student.setFirstName(firstName);
  216.     student.setLastName(lastName);
  217.     student.setPhone(phone);
  218.     student.setEMailAddr(eMailAddr);
  219.     student.setSSNum(ssNum);
  220.     return student;
  221.   }
  222.   public void setStudentData(StudentVO student)
  223.   {
  224.     firstName = student.getFirstName();
  225.     lastName = student.getLastName();
  226.     eMailAddr = student.getEMailAddr();
  227.     phone = student.getPhone();
  228.     ssNum = student.getSSNum();
  229.   }
  230.   public String getFirstName() {
  231.     return(firstName);
  232.   }
  233.   public void setFirstName(String firstName) {
  234.     this.firstName = firstName;
  235.   }
  236.   public String getLastName() {
  237.     return lastName;
  238.   }
  239.   public void setLastName(String lastName) {
  240.     this.lastName = lastName;
  241.   }
  242.   public String getEMailAddr() {
  243.     return eMailAddr;
  244.   }
  245.   public void setEMailAddr(String eMailAddr) {
  246.     this.eMailAddr = eMailAddr;
  247.   }
  248.   public String getPhone() {
  249.     return phone;
  250.   }
  251.   public void setPhone(String phone) {
  252.     this.phone = phone;
  253.   }
  254.   public String getSSNum() {
  255.     return ssNum;
  256.   }
  257.   public void setSSNum(String ssNum) {
  258.     this.ssNum = ssNum;
  259.   }
  260.   private Connection getConnection() throws EJBException
  261.   {
  262.     try {
  263.       InitialContext ic = new InitialContext();
  264.       DataSource ds = (DataSource)ic.lookup(DATASOURCE);
  265.       return ds.getConnection();
  266.     }
  267.     catch (Exception e) {
  268.       throw new EJBException(e.getMessage());
  269.     }
  270.   }
  271.   private void readData(StudentPK key) throws
  272.         FinderException, EJBException
  273.   {
  274.     Connection con = null;
  275.     PreparedStatement ps = null;
  276.     try {
  277.       con = getConnection();
  278.       ps = con.prepareStatement("select ID, FIRST_NAME,LAST_NAME,EMAIL_ADDR,PHONE,SSNUM from STUDENT where ID = ?");
  279.       ps.setString(1, key.id);
  280.       ResultSet rs = ps.executeQuery();
  281.       if (!rs.next()) {
  282.         throw new FinderException("Record not found");
  283.       }
  284.       else {
  285.         loadAttributes(rs);
  286.       }
  287.       rs.close();
  288.     }
  289.     catch (Exception e){
  290.       throw new EJBException(e.getMessage());
  291.     }
  292.     finally {
  293.       cleanup(con, ps);
  294.     }
  295.   }
  296. }