Java/EJB3/Entity Listener

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

Entity With Entity Listener

   <source lang="java">

File: EmployeeService.java

import java.util.List; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; @Stateless public class EmployeeService implements EmployeeServiceLocal, EmployeeServiceRemote {

 @PersistenceContext(unitName="EmployeeService")
 EntityManager em;
 
 public EmployeeService() {
 }
 public void doAction(){
   Employee employee = new Employee();
   employee.setFirstName("E");
   employee.setLastName("E");
   em.persist(employee);
   employee.setLastName("New");
   em.merge(employee);
   
   em.remove(employee);
   
   em.flush();
   System.out.println("saved");
   
   
   List list = em.createQuery("FROM Employee p").getResultList();
   
   
 }

}


File: EmployeeServiceLocal.java

import java.util.Collection; import javax.ejb.Local; @Local public interface EmployeeServiceLocal {

   public void doAction();

}

File: EmployeeServiceRemote.java


import java.util.Collection; import javax.ejb.Remote; @Remote public interface EmployeeServiceRemote{

 public void doAction();  

}

File: EntityListener.java

import javax.persistence.PostLoad; import javax.persistence.PostPersist; import javax.persistence.PostRemove; import javax.persistence.PostUpdate; public class EntityListener {

  @PostUpdate
  public void update(Object entity)
  {
     System.out.println("@PostUpdate: " + entity.getClass().getName());
  }
  @PostPersist
  public void persist(Object entity)
  {
     System.out.println("@PostPersist: " + entity.getClass().getName());
  }
  @PostLoad
  public void load(Object entity)
  {
     System.out.println("@PostLoad: " + entity.getClass().getName());
  }
     
  @PostRemove
  public void remove(Object entity)
  {
     System.out.println("@PostRemove: " + entity.getClass().getName());
  }
 

}

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

 private int id;
 private String firstName;
 private String lastName;
 @Id
 @GeneratedValue
 public int getId() {
   return id;
 }
 @PostRemove
 public void postRemove()
 {
    System.out.println("@PostRemove");
 }
 public void setId(int id) {
   this.id = id;
 }
 public String getFirstName() {
   return firstName;
 }
 public void setFirstName(String first) {
   this.firstName = first;
 }
 public String getLastName() {
   return lastName;
 }
 public void setLastName(String last) {
   this.lastName = last;
 }

}

File: Main.java import java.util.Collection; import javax.naming.InitialContext;

public class Main {

 public static void main(String[] a) throws Exception {
   EmployeeServiceRemote service = null;
   // Context compEnv = (Context) new InitialContext().lookup("java:comp/env");
   // service = (HelloService)new InitialContext().lookup("java:comp/env/ejb/HelloService");
   service = (EmployeeServiceRemote) new InitialContext().lookup("EmployeeService/remote");
   
   
   
   
   service.doAction();
 }

}

File: jndi.properties java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces java.naming.provider.url=localhost:1099


      </source>