Bir örnek yardımıyla anlamanızı sağlamaya çalışacağım. İki sütun ve ID (int) ve NAME (String) içeren bir ilişkisel tablonuz (ÖĞRENCİ) olduğunu varsayalım. Şimdi ORM olarak, aşağıdaki gibi bir varlık sınıfı yapardınız: -
package com.kashyap.default;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
/**
* @author vaibhav.kashyap
*
*/
@Entity
@Table(name = "STUDENT")
public class Student implements Serializable {
/**
*
*/
private static final long serialVersionUID = -1354919370115428781L;
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "NAME")
private String name;
public Student(){
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Tabloda zaten girişler olduğunu varsayalım. Şimdi biri sizden başka bir "AGE" (int) sütunu eklemenizi isterse
DEĞİŞİKLİK TABLOSU ÖĞRENCİ YAŞ EKLE int NULL
Önceden doldurulmuş bir tabloya başka bir sütun eklemek için varsayılan değerleri NULL olarak ayarlamanız gerekir. Bu, sınıfa başka bir alan eklemenizi sağlar. Şimdi, alanı bildirmek için ilkel veri türü mü yoksa ilkel olmayan sarmalayıcı veri türü mü kullanacağınız sorusu ortaya çıkıyor.
@Column(name = "AGE")
private int age;
veya
@Column(name = "AGE")
private INTEGER age;
alanı ilkel olmayan sarmalayıcı veri türü olarak bildirmeniz gerekir, çünkü kap tabloyu varlıkla eşlemeye çalışacaktır. Dolayısıyla, alanı sarmalayıcı olarak bildirmezseniz ve sonunda "İlkel tür ayarlayıcı özelliğine boş değer atandı" İstisnası atarsanız, NULL değerleri (varsayılan) eşleyemez.