數據加載中……
          在j2se環境中ejb3.0操作entity bean的通用類 PerfectEntityManager
          package com.vsc.study.ejb.util;

          import com.vsc.study.ejb.entitybean.Function;
          import java.lang.reflect.Method;
          import java.util.HashMap;
          import java.util.List;
          import java.util.Map;
          import javax.persistence.EntityManager;
          import javax.persistence.EntityManagerFactory;
          import javax.persistence.Persistence;

          public class PerfectEntityManager {
              
              private EntityManagerFactory emf;
              private EntityManager em;
              
              public PerfectEntityManager() {
                  emf = Persistence.createEntityManagerFactory("study-ejbPU");
                  em = emf.createEntityManager();
              }
              
              public PerfectEntityManager(String utinName) {
                  emf = Persistence.createEntityManagerFactory(utinName);
                  em = emf.createEntityManager();
              }
              
              public Map<Integer, List> getCurrentResults(int currentPage, int pageSize,
                      int maxResults, String querySql) {
                  if (maxResults == 0) {
                      maxResults = em.createQuery(querySql).getResultList().size();
                  }
                  List list = em.createQuery(querySql).setFirstResult(
                          (currentPage - 1) * pageSize).setMaxResults(pageSize)
                          .getResultList();
                  HashMap<Integer, List> hashMap = new HashMap<Integer, List>();
                  hashMap.put(maxResults, list);
                  return hashMap;
              }
              
              public Map<Integer, List> getCurrentResults(int currentPage, int pageSize,
                      int maxResults, Object object) {
                  
                  if (maxResults == 0) {
                      maxResults = em.createQuery("from " + object.getClass())
                      .getResultList().size();
                  }
                  List list = em.createQuery("from " + object.getClass()).setFirstResult(
                          (currentPage - 1) * pageSize).setMaxResults(pageSize)
                          .getResultList();
                  HashMap<Integer, List> hashMap = new HashMap<Integer, List>();
                  hashMap.put(maxResults, list);
                  return hashMap;
              }
              
              String separator = " ";
              
              public String setEjbql(Object object, List<Ejbql> ejbqlList) {
                  StringBuilder sb = new StringBuilder("select o from "
                          + object.getClass() + " as o where 1=1 ");
                  for (Ejbql ejbql : ejbqlList) {
                      if (ejbql == null) {
                          continue;
                      }
                      if (ejbql.getCloumns() == null) {
                          continue;
                      }
                      if (ejbql.getOperator() == null) {
                          continue;
                      }
                      if (ejbql.getValues() == null) {
                          continue;
                      }
                      sb.append(ejbql.getAndOr() + separator);
                      sb.append("o." + ejbql.getCloumns());
                      if (ejbql.getOperator().equals("like")) {
                          sb.append(separator + ejbql.getOperator() + separator);
                          sb.append("'%" + ejbql.getValues() + "%'" + separator);
                      } else {
                          sb.append(ejbql.getOperator() + separator);
                          if (ejbql.getValues() instanceof String) {
                              sb.append("'" + ejbql.getValues() + "'" + separator);
                          } else {
                              sb.append(ejbql.getValues() + separator);
                          }
                      }
                  }
                  return sb.toString();
              }
              
              public String setEjbql(String classname, List<Ejbql> ejbqlList) {
                  StringBuilder sb = new StringBuilder("select o from " + classname
                          + " as o where 1=1 ");
                  for (Ejbql ejbql : ejbqlList) {
                      if (ejbql == null) {
                          continue;
                      }
                      if (ejbql.getCloumns() == null) {
                          continue;
                      }
                      if (ejbql.getOperator() == null) {
                          continue;
                      }
                      if (ejbql.getValues() == null) {
                          continue;
                      }
                      sb.append(ejbql.getAndOr() + separator);
                      sb.append("o." + ejbql.getCloumns());
                      if (ejbql.getOperator().equals("like")) {
                          sb.append(separator + ejbql.getOperator() + separator);
                          sb.append("'%" + ejbql.getValues() + "%'" + separator);
                      } else {
                          sb.append(ejbql.getOperator() + separator);
                          if (ejbql.getValues() instanceof String) {
                              sb.append("'" + ejbql.getValues() + "'" + separator);
                          } else {
                              sb.append(ejbql.getValues() + separator);
                          }
                      }
                  }
                  return sb.toString();
              }
              
              public int remove(Object object) {
                  if (object == null)
                      throw new NullPointerException();
                  try {
                      em.getTransaction().begin();
                      em.remove(this.search(object));
                      em.getTransaction().commit();
                      em.close();
                      emf.close();
                      return 0;
                  } catch (Exception e) {
                      return -2;
                  }
              }
              
              public int update(Object object) {
                  if (object == null || this.getId(object) == null)
                     throw new NullPointerException();
                  Object obj = this.search(object);
                  this.updateBean(object, obj);
                  try {
                      em.getTransaction().begin();
                      em.merge(obj);
                      em.getTransaction().commit();
                      em.close();
                      emf.close();
                      return 0;
                  } catch (Exception e) {
                      return -1;
                  }
              }
              
              public Object search(Object object) {
                  if (object == null)
                     throw new NullPointerException();
                  try {
                      Object obj = em.find(object.getClass(), this.getId(object));
                      return obj;
                  } catch (Exception e) {
                      e.printStackTrace();
                      return -1;
                  }
              }
              
              public List searchAll(Object object) {
                  if (object == null)
                      throw new NullPointerException();
                  try {
                      em.getTransaction().begin();
                      List list = em.createQuery("from " + object.getClass()).getResultList();
                      em.getTransaction().commit();
                      em.close();
                      emf.close();
                      return list;
                  } catch (Exception e) {
                      e.printStackTrace();
                      return null;
                  }
              }
              
              public Long insert(Object object) {
                  try {
                      em.getTransaction().begin();
                      em.persist(object);
                      em.getTransaction().commit();
                      em.close();
                      emf.close();
                      return this.getId(object);
                  } catch (Exception e) {
                      e.printStackTrace();
                      return -1l;
                  }
              }
              
              public Long getId(Object object) {
                  if (object == null)
                      throw new NullPointerException();
                  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 updateBean(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:26 java flex 結合 閱讀(705) 評論(0)  編輯  收藏 所屬分類: ejb 3.0

          主站蜘蛛池模板: 武平县| 盱眙县| 深泽县| 泉州市| 滦南县| 镇坪县| 新安县| 马关县| 佛坪县| 克拉玛依市| 托克逊县| 文安县| 香河县| 腾冲县| 临湘市| 安徽省| 兴和县| 江孜县| 颍上县| 荃湾区| 义马市| 称多县| 苍山县| 思茅市| 扶余县| 延津县| 禄劝| 来安县| 淅川县| 卫辉市| 永兴县| 梧州市| 大竹县| 广元市| 普兰县| 静乐县| 温宿县| 鲁甸县| 茶陵县| 阳信县| 安达市|