Hibernate Dersleri – NamedQuery Nedir? Kullanımı

Hibernate

Hibernate Dersleri‘ne devam ediyoruz.

Önceki derslerde HQL’in ne olduğundan bahsetmiştim(HQL Nedir?). HQL kullanarak isteğe özel sorgular yazabiliyorduk. Bu isteğe özel sorguların daha derli toplu bir şekilde olması, yazımı ve yönetimini kolaylaştırması açısından oldukça önemli. Kodlar içerisinde sorgu değişiklikleri her sınıfın üzerindeki blok üzerinden yapabiliyoruz. Bu sorguya bir isim vererek diğer yerlerden kullanabiliyoruz.

@Entity
@Table(name = "uye")
@NamedQueries({
    @NamedQuery(name = "Uye.findAll", query = "from Uye"),
    @NamedQuery(name = "Uye.findById", query = "from Uye where id=:id"),
    @NamedQuery(name = "Uye.findByAd", query = "from Uye where ad=:ad"),
    @NamedQuery(name = "Uye.findBySoyad", query = "from Uye where soyad=:soyad")})

public class Uye implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(name = "ad")
    private String ad;

    @Column(name = "soyad")
    private String soyad;
 
    public Uye() {
    }
 
    public Uye(Integer id) {
        this.id = id;
    }
 
    public Integer getId() {
        return id;
    }
 
    public void setId(Integer id) {
        this.id = id;
    }
 
    public String getAd() {
        return ad;
    }
 
    public void setAd(String ad) {
        this.ad = ad;
    }
 
    public String getSoyad() {
        return soyad;
    }
 
    public void setSoyad(String soyad) {
        this.soyad = soyad;
    }     
}

Persist sınıfımızı yazdık.  İşaretli alanda da görüldüğü üzere sınıfın en başına @NamedQuery anotasyonunu kullanarak HQL yardımı ile isteğimize göre o sınıfa ait sorgularımızı yazıyoruz ve her sorguya isim veriyoruz. Bu isimlere göre kullanmak istediğimiz yerden çağıracağız. Şimdi @NamedQuey işlemini kullanarak sorgularımızı çalıştıralım ve parametrelerimizi gönderelim.

public static void main(String[] args) {
 
        AnnotationConfiguration config = new AnnotationConfiguration();
        config.addAnnotatedClass(Uye.class);
        config.configure("hibernate.cfg.xml");
        SessionFactory sessionFactory = config.buildSessionFactory();
        Session session = sessionFactory.openSession();
        session.getTransaction().begin();

        Query query1 = session.getNamedQuery("Uye.findById");
        query.setParameter("id", 1);
        List liste = query.list();

        Query query2 = session.getNamedQuery("Uye.findAll");
        List<> uyeListesi=query2.list();

        Query query3 = session.getNamedQuery("Uye.findByAd"); 
        query3.setParameter("ad", "Burak"); 
        List kisiAdinaGore = query3.list();
       
        session.getTransaction().commit();
 
    }
}

Sorgularımızı çağırma işlemi ve parametre gönderme işlemi işaretli alanlarda gösterildiği gibi olmaktadır. Bir liste şeklinde sorgu geri döner.
 

Önceki Ders: HQL Nedir? Hibernate Dersleri Sonraki Ders: Criteria Queries

Leave a Reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Burak KUTBAY 2010 - 2019
%d blogcu bunu beğendi: