數據加載中……
          在j2ee環境中ejb3.0的session bean操作entity bean的通用類 ManyActionSessionBean
          package com.vsc.study.ejb.sessionbean;

          import com.vsc.study.ejb.entitybean.Function;
          import com.vsc.study.ejb.remote.ManyActionSessionRemote;
          import com.vsc.study.ejb.util.LoggerInterceptor;
          import java.lang.reflect.Method;
          import java.util.HashMap;
          import java.util.List;
          import java.util.Map;
          import javax.ejb.Stateless;
          import javax.persistence.EntityManager;
          import javax.persistence.PersistenceContext;
          import javax.interceptor.Interceptors;

          @Stateless
          //@Interceptors({LoggerInterceptor.class})
          public class ManyActionSessionBean implements ManyActionSessionRemote {
              
              @PersistenceContext
              private EntityManager em;
             
              public Map getCurrentResults(int currentPage, int pageSize,
                      int maxResultSet,String querySql) {
                  if(maxResultSet==0){
                      maxResultSet = em.createQuery(querySql).getResultList().size();
                  }
                  List list = em.createQuery(querySql).setFirstResult(
                          (currentPage - 1) * pageSize).setMaxResults(pageSize)
                          .getResultList();
                  HashMap hashMap = new HashMap();
                  hashMap.put(maxResultSet, list);
                  return hashMap;
              }
             
              public Map getCurrentResults(int currentPage, int pageSize,
                      int maxResultSet,Object object) {
                  if(maxResultSet==0){
                      maxResultSet = em.createQuery("from " + object.getClass().getSimpleName()).getResultList().size();
                  }
                  List list = em.createQuery("from " + object.getClass().getSimpleName())
                  .setFirstResult((currentPage - 1) * pageSize).setMaxResults(
                          pageSize).getResultList();
                  HashMap hashMap = new HashMap();
                  hashMap.put(maxResultSet, list);
                  return hashMap;
              }
             
              public int remove(Object object) {
                  if (object == null)
                      return -1;
                  try {
                      em.remove(this.search(object));
                      return 0;
                  } catch (Exception e) {
                      return -2;
                  }
              }
             
              public int[] removes(Object[] objects) {
                  if(objects==null)
                      throw new NullPointerException();
                  int[] results = new int[objects.length];
                  for (int i = 0; i < objects.length; i++) {
                      Object obj = em.find(objects.getClass(), this.getId(objects[i]));
                      if (obj != null) {
                          results[i] = this.remove(obj);
                      }
                  }
                  return results;
              }
             
              public int update(Object object) {
                  if (object == null || this.getId(object) == null)
                      return -1;
                  Object obj = this.search(object);
                  if (obj == null)
                      return -2;
                  this.updateEntityBean(object, obj);
                  try {
                      em.merge(obj.getClass().cast(obj));
                      return 0;
                  } catch (Exception e) {
                      return -1;
                  }
              }
             
              public Object search(Object object) {
                  if (object == null || this.getId(object) == null)
                      return -1;
                  try {
                      return em.find(object.getClass(), this.getId(object));
                  } catch (Exception e) {
                      e.printStackTrace();
                      return -1;
                  }
              }
             
              public List  searchAll(Object object) {
                  if (object == null)
                      return null;
                  try {
                      return em.createQuery("from " + object.getClass().getSimpleName()).getResultList();
                  } catch (Exception e) {
                      e.printStackTrace();
                      return null;
                  }
              }
             
              public Long insert(Object object) {
                  try {
                      em.persist(object.getClass().cast(object));
                      return this.getId(object);
                  } catch (Exception e) {
                      e.printStackTrace();
                      return -1l;
                  }
              }
             
              public Long getId(Object object) {
                  if (object == null)
                      return -1l;
                  try {
                      return (Long) object.getClass().getDeclaredMethod("getId").invoke(
                              object);
                  } catch (Exception e) {
                      e.printStackTrace();
                      return -5l;
                  }
              }
             
              /**
               * obj is update Object
               *
               * @param object
               * @param obj
               */
              public void updateEntityBean(Object object, Object obj) {
                  try {
                      Method[] methods = object.getClass().getDeclaredMethods();
                      Method method;
                      Object objectMethodValue;
                      Object objMethodValue;
                      for (int i = 0; i < methods.length; i++) {
                          if (methods[i].getName().trim().startsWith("get")) {
                              if (methods[i].invoke(object) == null) {
                                  System.out
                                          .println("----------this field is null--------------");
                                  continue;
                              }
                              objectMethodValue = methods[i].invoke(object);
                              objMethodValue = methods[i].invoke(obj);
                              if (objectMethodValue.equals(objMethodValue)) {
                                  System.out
                                          .println("----------field is equals--------------");
                                  continue;
                              }
                              method = obj.getClass().getDeclaredMethod(
                                      methods[i].getName().trim().replaceFirst("g", "s"),
                                      methods[i].getReturnType());
                              method.invoke(obj, objectMethodValue);
                              System.out.println("==============="
                                      + methods[i].invoke(obj));
                          }
                      }
                  } catch (Exception e) {
                      e.printStackTrace();
                  }
              }
          }

          posted on 2008-02-25 15:23 java flex 結合 閱讀(872) 評論(1)  編輯  收藏 所屬分類: ejb 3.0

          評論

          # re: 在j2ee環境中ejb3.0的session bean操作entity bean的通用類 ManyActionSessionBean 2009-07-16 17:35 找個美女做老婆

            回復  更多評論    
          主站蜘蛛池模板: 加查县| 沈阳市| 旺苍县| 交城县| 若尔盖县| 舒城县| 从化市| 桂平市| 潜江市| 托克逊县| 三台县| 潮安县| 永嘉县| 房产| 炎陵县| 烟台市| 库车县| 霍邱县| 比如县| 阳泉市| 南漳县| 万荣县| 辰溪县| 永胜县| 北川| 临城县| 运城市| 泰顺县| 林西县| 丹东市| 临泉县| 东丰县| 绥棱县| 深州市| 明星| 巴塘县| 九寨沟县| 潜山县| 望都县| 平凉市| 咸丰县|