1 packagecom.genius.han.dao.impl;2
3 importjava.io.Serializable;4 importjava.lang.reflect.ParameterizedType;5 importjava.lang.reflect.Type;6
7 importjavax.persistence.EntityManager;8 importjavax.persistence.LockModeType;9 importjavax.persistence.PersistenceContext;10 importjavax.persistence.Query;11 importjavax.transaction.Transactional;12
13 importorg.springframework.util.Assert;14 importorg.springframework.util.StringUtils;15
16 importcom.genius.han.dao.BaseDao;17
18 @Transactional19 public class BaseDaoImpl implements BaseDao{20
21 private static final long serialVersionUID = 1L;22
23
24 private ClassentityClass;25
26 @PersistenceContext27 protectedEntityManager entityManager;28
29
30 @SuppressWarnings("unchecked")31 publicBaseDaoImpl()32 {33 Type type =getClass().getGenericSuperclass();34 Type[] parameterizedType =((ParameterizedType) type).getActualTypeArguments();35 entityClass = (Class) parameterizedType[0];36 }37
38 @Override39 publicT find(ID id)40 {41 if (id != null)42 {43 returnentityManager.find(entityClass, id);44 }45 return null;46 }47
48 @Override49 publicT find(ID id, LockModeType lockModeType)50 {51 if (id != null)52 {53 if (lockModeType != null)54 {55 returnentityManager.find(entityClass, id, lockModeType);56 }57 else
58 {59 returnentityManager.find(entityClass, id);60 }61 }62 return null;63 }64
65 @Override66 public voidpersist(T entity)67 {68 Assert.notNull(entity);69 entityManager.persist(entity);70
71 }72
73 @Override74 publicT merge(T entity)75 {76 Assert.notNull(entity);77 returnentityManager.merge(entity);78 }79
80 @Override81 public voidremove(T entity)82 {83 Assert.notNull(entity);84 if (entity != null)85 {86 entityManager.remove(entity);87 }88 }89
90 @Override91 publicQuery createNativeQuery(String sql)92 {93 if (!StringUtils.isEmpty(sql))94 {95 returnentityManager.createNativeQuery(sql);96 }97 return null;98 }99
100 @Override101 public voidrefresh(T entity)102 {103 Assert.notNull(entity);104 if (entity != null)105 {106 entityManager.refresh(entity);107 }108 }109
110 @Override111 public voidrefresh(T entity, LockModeType lockModeType)112 {113 Assert.notNull(entity);114 if (entity != null)115 {116 if (lockModeType != null)117 {118 entityManager.refresh(entity, lockModeType);119 }120 else
121 {122 entityManager.refresh(entity);123 }124 }125
126 }127
128 @SuppressWarnings("unchecked")129 @Override130 publicID getIdentifier(T entity)131 {132 Assert.notNull(entity);133 if (entity != null)134 {135 return(ID) entityManager.getEntityManagerFactory().getPersistenceUnitUtil()136 .getIdentifier(entity);137 }138 return null;139 }140
141 @Override142 public booleanisManaged(T entity)143 {144 Assert.notNull(entity);145 if (entity != null)146 {147 returnentityManager.contains(entity);148 }149 return false;150 }151
152 @Override153 public voiddetach(T entity)154 {155 Assert.notNull(entity);156 if (entity != null)157 {158 entityManager.detach(entity);159 }160 }161
162 @Override163 public voidlock(T entity, LockModeType lockModeType)164 {165 Assert.notNull(entity);166 Assert.notNull(lockModeType);167 if (entity != null && lockModeType != null)168 {169 entityManager.lock(entity, lockModeType);170 }171 }172
173 @Override174 public voidclear()175 {176 entityManager.clear();177 }178
179 @Override180 public voidflush()181 {182 entityManager.flush();183 }184
185
186 }