Merhaba arkadaşlar, bu yazımda bazı notasyonlardan bahsedeceğim. Bu notasyonları örnek üzerinde inceleyelim.
Hibernate.cfg.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.password">19961903</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate-test</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.show_sql">true</property> <property name="hibernate.hbm2ddl.auto">update</property> <property name="hibernate.format_sql">true</property> <!-- <mapping class="_001_model.Personel"/>--> <mapping class="_002_model.Person"/> </session-factory> </hibernate-configuration> |
Hibernate.show_sql => Yapılan işlemlerin konsolda hql kodunu verir.
Hibernate.format_sql => Çıktı olarak verilen kodu sql koda çevirir ve çıktısını verir.
Hibernate.hbm2ddl.auto => Tabloların tekrardan oluşturulması yada güncellenmesi vb. işlemleri yapar.
- Update => Tablolar varsa günceller. Tablolar yoksa oluşturur.
- Cretate => Var olan tabloları siler. Tekrardan oluşturur.
- Create-drop => Veritabanı session sonrası silinir ve sessionda tekrar yüklenir.
- Validate =>
Test.java
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public class Test { public static void main(String[] args) { SessionFactory factory=new Configuration().configure("META-INF/hibernate.cfg.xml").buildSessionFactory(); Session session=factory.openSession(); Transaction transaction=session.getTransaction(); Person person=new Person("Furkan","KOÇ",new Date()); transaction.begin(); session.save(person); transaction.commit(); } } |
Transaction işlemi başlatıldı ve Person nesnesi yapıcı metot ile oluşturuldu ve save() metodu ile kayıt işlemi yapıldı. Transaction işleme alındı ve kayıt başarılı oldu.
Person.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
@Entity @Table(name="PersonTable") public class Person { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name="personId",nullable=false,updatable=false,insertable=false,length=25) private int id; @Column(name="personName") private String name; @Column(name="personSurname") private String surname; @Column(name="date") @Temporal(TemporalType.DATE) private Date date; public Person(String name, String surname, Date date) { this.name = name; this.surname = surname; this.date = date; } public Person() { } // Getters and Setters |
@Entity => Sınıfımızı kalıcı hale getirir.
@Table => Table özellikleri belirlenir.
- Name => Tablo ismi verilir. Eğer bu özellik verilmezse tablomuz sınıfımız ile aynı ismi alır.
- Catalog =>
- İndexes =>
- Schema =>
- uniqueConstraints =>
@Id => Entity sınıfta olmak zorundadır. id değerini belirtir.
@GeneratedValue => Surrogate key(Vekil anahtar) üretilmesini sağlar.
- Auto => Veritabanı türüne göre Hibernate kullanacağı yöntemi seçer. Örneğin oracle için sequence yöntemi kullanılırken, mysql için identity kullanılır.
- Table => Benzersiz key oluşturulmasını takip etmek için ayrı bir Veritabanı tablosu tahsis eder. Table özelliği @TableGenerator notasyonu ile el ele çalışır.
- Sequence => Oracle, DB2 ve postgres gibi veritabanları kullanır. Oracle kullanırken karışık artıyor.
- Identity => MySql, Postgres DB2 ve SQL Server veritabanları destekler. Oracle desteklemez.
@Column => Bu notasyon değişkenin tabloda hangi kolona karşılık geldiğini belirtir. Ve sütun özelliklerini verir.
- Name => Sütun ismini verir. Eğer bu özellik kullanılmazsa değişken ismi ile aynı olur.
- Nullable => Boş geçilebilir mi? False değeri boş geçilemez yapar.
- Updatable => Sütunun, kalıcılık sağlayıcısı tarafından oluşturulan SQL UPDATE ifadelerine dâhil edilip edilmediği.
- İnsertable => Sütunun, kalıcılık sağlayıcısı tarafından oluşturulan SQL INSERT ifadelerine dâhil edilip edilmediği.
- Length => Uzunluğu belirtir.
- Unique => Sütunun yalnızca benzersiz değerleri içeren olarak işaretlenmesine izin verir.
@Temporal => Tarih veri tiplerinde kullanılır. Belirtilen formata çevirim yapar.
- DATE => LocalDate, DATE ile eşlendi
- TIME =>LocalTime ve OffsetTime, TIME ile eşlenir
- TIMESTAMP =>Instant, LocalDateTime, OffsetDateTime ve ZonedDateTime, TIMESTAMP ile eşlenir.
Çıktı:
Bu yazımı burada bitiriyorum diğer yazılarımda görüşmek üzere…