جاوا و تکنولوژی های آن

java programming language

در این وبلاگ به بررسی نکات موجود در جاوا و تکنولوژی های آن می پردازیم

طبقه بندی موضوعی


از Spring 3.1 به بعد استفاده از JpaTemplate  و طبیعتا JpaDaoSupport به نفع Java Persistence API منسوخ شده اند



انتقال و تبدیل Exception ها بدون Template :


یکی از وظایف JpaTemplate انتقال و تبدیل Exception های low-level به سطح بالاتر Spring بود. بدون Template این فرآیند همچنان برای کلیه کلاس های DAO که با Repository@ مشخص شده اند فعال است 

در پشت پرده یک Spring Bean وجود دارد که خطاهای از نوع PersistenceExceptionTranslator تولید شده در Bean های Repository@ را پردازش میکند 


* نکته ای که باید در ذهن بیاد داشته باشیم این است که فرآیند تبدیل خطاها از Proxy استفاده میکند و برای اینکه Spring بتواند از Proxy استفاده کند نباید بصورت final تعریف شوند 




کلاس DAO :


یک کلاس ابسترکت DAO که شامل پارامتر های DAO و یکسری عملیات عمومی را در نظر بگیرید که برای هر کلاس Entity قابل ارث بری است 


public abstract class AbstractJpaDAO< T extends Serializable > {
 
   private Class< T > clazz;
 
   @PersistenceContext
   EntityManager entityManager;
 
   public final void setClazz( Class< T > clazzToSet ){
      this.clazz = clazzToSet;
   }
 
   public T findOne( long id ){
      return entityManager.find( clazz, id );
   }
   public List< T > findAll(){
      return entityManager.createQuery( "from " + clazz.getName() )
       .getResultList();
   }
 
   public void create( T entity ){
      entityManager.persist( entity );
   }
 
   public T update( T entity ){
      return entityManager.merge( entity );
   }
 
   public void delete( T entity ){
      entityManager.remove( entity );
   }
   public void deleteById( long entityId ){
      T entity = findOne( entityId );
      delete( entity );
   }
}



مهمترین ویژگی اش تزریق EntityManager بوسیله PersistenceContext@ است که بوسیله کلاس PersistenceAnnotationBeanPostProcessor کنترل میشود 




استفاده از کلاس DAO :


@Repository
public class FooDAO extends AbstractJPADAO< Foo > implements IFooDAO{
 
   public FooDAO(){
      setClazz(Foo.class );
   }
}








نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی