數據加載中……
          在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 結合 閱讀(874) 評論(1)  編輯  收藏 所屬分類: ejb 3.0

          評論

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

            回復  更多評論    
          主站蜘蛛池模板: 台州市| 略阳县| 宕昌县| 上林县| 兴业县| 方城县| 高雄县| 霍州市| 瑞昌市| 偃师市| 玉龙| 萝北县| 铜陵市| 南昌县| 温州市| 牡丹江市| 万荣县| 武清区| 永胜县| 禹州市| 南靖县| 丰城市| 静海县| 会东县| 弋阳县| 碌曲县| 利川市| 杭州市| 千阳县| 连云港市| 普定县| 博野县| 蓬莱市| 昌宁县| 伊春市| 漯河市| 驻马店市| 大渡口区| 平定县| 赞皇县| 枣强县|