JPA ile Oluşturulan Kalıcılık Birimleri ve Örneklerle Çalışma Şekilleri

JPA’ dan önceki yazılarımda geniş bir şekilde bahsetmiştim. Veritabanı ile program arasında işleri kolaylaştıran, süreci hızlandıran bir bağ olduğunu söylemiştim. (JPA Hakkında Ayrıntılı Bilgi için Tıklayınız.  Kalıcılık Biriminin Oluşturulma Aşaması İçin Tıklayınız.) Düşündüm ki JPA aracılığı ile oluşturulan sınıfların bir incelemesini yazmam sizler için daha faydalı olur. Bu yazıdan ve örneklerden sonra kavramlar bir kademe daha oturacaktır kafanızda.


İlk olarak bahsettiğim sınıflardan veritabanındaki tabloyla aynı isme sahip sınıftan bahsetmek istiyorum. Daha önce de açıkladığım gibi, bu sınıf tablo ile gerekli ilişkilendirmeyi oluşturup tablodan ve veritabanından bağımsız bir program yazmamızı sağlıyor. Bu da bizler için hatırı sayılır bir kolaylık ve zaman tasarrufu oluyor. En iyisi ben kalıcılık birimi kavramı altında oluşturulan busınıfın kodlarını verip ardından açıklamasını yapayım.

projectInfos.java classı
[cc lang = ‘java’]
package actions;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

/**
 *
 * @author dell620x
 */
@Entity
@Table(name = “projectsInfos”)
@NamedQueries({
    @NamedQuery(name = “ProjectsInfos.findAll”, query = “SELECT p FROM ProjectsInfos p”),
    @NamedQuery(name = “ProjectsInfos.findByPCode”, query = “SELECT p FROM ProjectsInfos p WHERE p.pCode = :pCode”),
    @NamedQuery(name = “ProjectsInfos.findByName”, query = “SELECT p FROM ProjectsInfos p WHERE p.name = :name”),
    @NamedQuery(name = “ProjectsInfos.findByExplanation”, query = “SELECT p FROM ProjectsInfos p WHERE p.explanation = :explanation”),
    @NamedQuery(name = “ProjectsInfos.findByLink”, query = “SELECT p FROM ProjectsInfos p WHERE p.link = :link”),
    @NamedQuery(name = “ProjectsInfos.findByProjectCategory”, query = “SELECT p FROM ProjectsInfos p WHERE p.projectCategory = :projectCategory”)})
public class ProjectsInfos implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = “pCode”)
    private Integer pCode;
    @Basic(optional = false)
    @Column(name = “name”)
    private String name;
    @Basic(optional = false)
    @Column(name = “explanation”)
    private String explanation;
    @Basic(optional = false)
    @Column(name = “link”)
    private String link;
    @Basic(optional = false)
    @Column(name = “projectCategory”)
    private int projectCategory;

    public ProjectsInfos() {
    }

    public ProjectsInfos(Integer pCode) {
        this.pCode = pCode;
    }

    public ProjectsInfos(Integer pCode, String name, String explanation, String link, int projectCategory) {
        this.pCode = pCode;
        this.name = name;
        this.explanation = explanation;
        this.link = link;
        this.projectCategory = projectCategory;
    }

    public Integer getPCode() {
        return pCode;
    }

    public void setPCode(Integer pCode) {
        this.pCode = pCode;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getExplanation() {
        return explanation;
    }

    public void setExplanation(String explanation) {
        this.explanation = explanation;
    }

    public String getLink() {
        return link;
    }

    public void setLink(String link) {
        this.link = link;
    }

    public int getProjectCategory() {
        return projectCategory;
    }

    public void setProjectCategory(int projectCategory) {
        this.projectCategory = projectCategory;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (pCode != null ? pCode.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning – this method won’t work in the case the id fields are not set
        if (!(object instanceof ProjectsInfos)) {
            return false;
        }
        ProjectsInfos other = (ProjectsInfos) object;
        if ((this.pCode == null && other.pCode != null) || (this.pCode != null && !this.pCode.equals(other.pCode))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return “actions.ProjectsInfos[pCode=” + pCode + “]”;
    }

    void setProjectCategory() {
        throw new UnsupportedOperationException(“Not yet implemented”);
    }

}
[/cc]
Temsili veritabanı tablosu; tablo adı: projectInfos

 pCode    name  link
explanation projectCategory
???? ???? ???? ???? ????

Koda dikkat edildiğinde; tablodan çekilen sütun isimlerinin aynı isimdeki değişkenlere atandığı ve  değişken olarak kodda temsil edildiği açıkça görülebilir. Class’ ın uzun olması gözünüzü korkutmasın, zira diğer kodlar tablodaki sütunlara değer atanması için gerekli olan, her bir sütun adına ait get ve set metodlarıdır.

Tabloyla sütünlar bazında ilişkimizi kesen sınıfı bu yazımda açıklamaya çalıştım. Basit SQL cümleleri bazında da veritabanıyla uğraşma yükünü hafifleten sınıf da başka bir yazımın konusu olacak. Zamanım olmadığı için tek bir makalenin konusu olacak bu iki sınıfı iki yazıya bölmek zorunda kaldım. O makaleyi yazdığımda burdan linkini vereceğim ki yazı bütünlüğü sağlansın. Görüşmek dileği ile…

Yazının devamı olan “JPA ile Oluşturulan Varlık Sınıfları Ve Örneklerle Çalışma Şekilleri” makalesi yayınlanmıştır.

Bir cevap yazın

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