Hibernate - Entity @Id

Posted by dogukanhan on June 05, 2020 · 1 min read

@Id Annotation: Oluşturulan entity içinde benzersiz bir alanı tanımlamak için kullanılır bu benzersi alan veritabanı tablosunda Primary Key olarak görülecektir.

Aşağıdaki örnekte Long tipindeki id değişkeni bir üst satırda yazılan @Id annotation’ı sayesinde veritabanı tablosunda Primary Key olarak tanımlanacaktır. Herhangi bir veriye ulaşmak istediğimizde bu anahtar değişkenler kullanılarak uygun verinin bulunması sağlanır.

@Id Annotation’ı kullanılan değişkenin tabloda Not Null olarak işaretlenir ve bu değişkeni null olan bir nesne veritabanına kaydedilemez. Bu alan ayriyeten benzersiz‘dir ve iki farklı kayıt için farklı olmak zorundadır. Bu alan kullanılarak erişlilen kayıtlara daha hızlı ulaşılır çünkü otomatik olarak indexlidirler.

@Entity
public class Student{

    @Id
    private Long id;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
}

Yukarıdaki entity için bir nesne kaydetmek istersek

Student student = new Student();
student.setId(1 L);
s.save(student);

Birden fazla değişkene @Id Annonation’ı kullanılarak birleşik bir anahtar tanımlanması yapılabilir. Fakat bunun sağlanabilmesi için entity sınıfının Serializable interface’ini implement etmesi gerekmektedir. Bu tür birleşik anahtarlarda her iki değişkenin kombinasyonlarının benzersiz olması şarttır.

@Entity
public class Student implements Serializable {

    @Id
    private Long id;

    @Id
    private Long id2;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId2() {
        return id2;
    }

    public void setId2(Long id2) {
        this.id2 = id2;
    }
}

Yukarıdaki entity için bir nesne kaydetmek istersek

Student student = new Student();
student.setId(1 L);
student.setId2(1 L);
session.save(student);