Cara membungkus API sesi Hibernasi menghindari peringatan generik yang tidak dicentang

Saya sedang mengkode pembungkus untuk Hibernate Session API:

    @SuppressWarnings("unchecked")
    public <T> List<T> execQuery(String hql){
    Session s=sf.getCurrentSession();
    return s.createQuery(hql)
                .list();
}

Fungsi list() dari Hibernate Session API sepertinya menggunakan tipe mentah. jadi Bagaimana saya bisa membungkus fungsi ini, dan membiarkan klien pembungkus saya menggunakan dengan aman seperti ini:

  List<BusinessObject> bo= xxx.execQuery(...);

person lovespring    schedule 27.04.2014    source sumber
comment
Sepertinya Anda sudah menulisnya. Apa sebenarnya yang kamu tanyakan?   -  person takteek    schedule 27.04.2014
comment
Bisakah saya menghindari @SuppressWarnings (tidak dicentang)?   -  person lovespring    schedule 27.04.2014
comment
Mengapa Anda tidak menggunakan JPA API standar, yang tidak menggunakan tipe mentah seperti yang dilakukan Session API?   -  person JB Nizet    schedule 27.04.2014


Jawaban (1)


Tidak ada cara untuk menghindari @SuppressWarnings("unchecked") di setidaknya satu tempat.

Karena List adalah tipe mentah, Anda harus melakukan konversi yang tidak dicentang di suatu tempat. Hal terbaik yang dapat Anda lakukan adalah menyimpannya di satu tempat, itulah yang Anda lakukan dengan execQuery.

person takteek    schedule 27.04.2014