Java Tutorial/EJB3/DataSource JDBC

Материал из Java эксперт
Перейти к: навигация, поиск

Inject DataSource

File: EmployeeBean.java



   <source lang="java">

import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import javax.annotation.Resource; import javax.ejb.EJBException; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.sql.DataSource; @Stateless public class EmployeeBean implements EmployeeServiceLocal, EmployeeServiceRemote {

 @PersistenceContext(unitName="EmployeeService") private EntityManager manager;
 
 @Resource(mappedName="java:/DefaultDS") DataSource dataSource;
 public void doAction(){
   PreparedStatement ps = null;
   Connection con = null;
   try
   {
      con = dataSource.getConnection();
      System.out.println("Creating table PAYMENT...");
      ps = con.prepareStatement("drop TABLE PAYMENT");
      ps.execute();
      ps = con.prepareStatement("CREATE TABLE PAYMENT ( " +
                                "CUSTOMER_ID INT, " +
                                "AMOUNT DECIMAL (8,2), " +
                                "TYPE CHAR (10), " +
                                "CHECK_BAR_CODE CHAR (50), " +
                                "CHECK_NUMBER INTEGER, " +
                                "CREDIT_NUMBER CHAR (20), " +
                                "CREDIT_EXP_DATE DATE" +
                                ")");
      ps.execute();
      System.out.println("...done!");
   }
   catch (SQLException sql)
   {
      throw new EJBException(sql);
   }
   finally
   {
      try { if (ps != null) ps.close(); } catch (Exception e) {}
      try { if (con != null) con.close(); } catch (Exception e) {}
   }    
   Customer cust = new Customer();
   cust.setLastName("Bond");
   cust.setSsn(1L);
   manager.persist(cust);
   
   System.out.println("Saved");
   
   cust = manager.find(Customer.class,1L);
   System.out.println(cust.getLastName());
   
   cust.setLastName("new name");
   
   manager.persist(cust);
   
   cust = manager.find(Customer.class,1L);
   System.out.println(cust.getLastName());
   
   manager.remove(cust);
   
   
   
 }

}</source>





Use JDBC In EJB

File: Customer.java



   <source lang="java">

import javax.persistence.Entity; import javax.persistence.EntityListeners; import javax.persistence.Id; import javax.persistence.PostRemove; @Entity @EntityListeners(EntityListener.class) public class Customer implements java.io.Serializable {

 private String firstName;
 private String lastName;
 @Id
 private long ssn;
 public String getFirstName() {
   return firstName;
 }
 public void setFirstName(String firstName) {
   this.firstName = firstName;
 }
 public String getLastName() {
   return lastName;
 }
 public void setLastName(String lastName) {
   this.lastName = lastName;
 }
 public long getSsn() {
   return ssn;
 }
 public void setSsn(long ssn) {
   this.ssn = ssn;
 }

}</source>