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

          評論

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

            回復  更多評論    
          主站蜘蛛池模板: 汽车| 怀远县| 阿拉尔市| 同心县| 宁德市| 黄平县| 临洮县| 兴隆县| 林口县| 南京市| 四子王旗| 衢州市| 沁水县| 湾仔区| 峡江县| 五寨县| 惠来县| 涞源县| 广水市| 新巴尔虎右旗| 惠安县| 自贡市| 江城| 嘉兴市| 通渭县| 宝应县| 南阳市| 鄂州市| 定州市| 抚远县| 武平县| 郯城县| 黎平县| 乡城县| 大竹县| 宣汉县| 内江市| 宁陵县| 安图县| 科技| 临湘市|