@Table
Table bulunduğu Entity sınıfının veritabanında karşılığı olan tabloyla ilgili özellikleri içerir.
@Table(name="gorevli")
yazarsak veritabanında oluşturduğumuz tablonun adını gorevli olarak değiştirmiş oluruz.
@Column
Değişkenin veritabanındaki tablo alanıyla ilgili özellikleri belirler.
şeklinde kullanırsak değişkenin veritabanındaki adını AD diye değiştirmiş oluruz.
@Column(length=50)
O değişkenin boyutu maksimum 50 karakter olur.
@Column(nullable=false)
nullable boş kalabilir demektir. True dersek o alanın boş olabilmesine izin vermiş oluruz. False dersek o alan kesinlikle boş geçilemez olur.
@Column(updatable=true)
updatable güncellenebilir demektir. True dersek güncellenmesine izin vermiş oluruz. False dersek o alan kesinlikle güncellenemez.
@Column(unique=true)
unique benzersiz demektir. True dersek o alan eşsiz olur. Email , Cep Telefonu, TC Kimlik no gibi sadece tek adet , eşsiz olan alanlar için kullanılır.
0-Kullanılan Teknolojiler
Eclipse IDEMaven 3.3.9
Hibernate 4.0.1.Final
MySQL 5.1
package com.hasanburakavci;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="gorevli")
public class Gorevli {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
@Column(name="AD",length=50, updatable=true)
private String ad;
@Column(unique=true , nullable=false)
private long tcNo;
//----------Getter-Setter-----------
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAd() {
return ad;
}
public void setAd(String ad) {
this.ad = ad;
}
public long getTcNo() {
return tcNo;
}
public void setTcNo(long tcNo) {
this.tcNo = tcNo;
}
3-HibernateUtil Sınıfı
package com.hasanburakavci.util; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { //SessionFactory oluşturuluyor. private static SessionFactory sessionFactory; static{ Configuration configuration = new Configuration().configure(); sessionFactory = configuration.buildSessionFactory(); } //Diğer sınıflardan getSessionFactory metoduyla sessionFactory çağırılıyor. public static SessionFactory getSessionFactory() { return sessionFactory; } }
4-Hibernate Application Sınıfı
package com.hasanburakavci; import org.hibernate.Session; import com.hasanburakavci.util.HibernateUtil; public class HibernateApplication { public static void main(String[] args){ //HibernateUtil sınıfından SessionFactory çağrıllp Session oluşturuluyor. Session session= HibernateUtil.getSessionFactory().openSession(); //gorevli1 nesnesi oluşturuluyor. Gorevli gorevli1=new Gorevli(); gorevli1.setAd("Hasan Burak"); //set metodu ile atama yapılıyor. gorevli1.setTcNo(12345); //Tc no eklendi. //gorevli2 nesnesi oluşturuluyor. Gorevli gorevli2=new Gorevli(); gorevli2.setAd("Mahmut"); gorevli2.setTcNo(12346); try { session.beginTransaction(); //oluşturulan gorevli1, gorevli2 veritabanına kaydediliyor. session.save(gorevli1); session.save(gorevli2); session.getTransaction().commit(); } catch (Exception e) { /*Eğer hata meydana gelirse Transaction ile yapılan işlem geriye sarılıp iptal eiliyor*/ session.getTransaction().rollback(); }finally { //her durumda session işlemi sonlandırılıyor. session.close(); } } }
5-Pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.hasanburakavci</groupId> <artifactId>MerhabaHibernate</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId><version>5.1.6</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>4.0.1.Final</version> </dependency> </dependencies> </project>
6-Hibernate.cfg.xml Dosyası
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.bytecode.use_reflection_optimizer">false</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">password</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping class="com.burakavci.Gorevli"/>
</session-factory>
</hibernate-configuration>
7-Konsol
.
.
.
INFO: HHH000262: Table not found: gorevli
Haz 17, 2016 4:12:31 AM org.hibernate.tool.hbm2ddl.DatabaseMetadata getTableMetadata
INFO: HHH000262: Table not found: gorevli
Haz 17, 2016 4:12:31 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000232: Schema update complete
Hibernate: insert into gorevli (AD, tcNo) values (?, ?)
Hibernate: insert into gorevli (AD, tcNo) values (?, ?)
8-Veritabanı Tablosu

AD @Column(name="AD") anotasyonu ie yeniden isimlendirildi. Eğer yazılmasaydı diğer alanlar gibi küçük harfle yazılacaktı. @Table(name="gorevli") anotasyonu ile tablonun ismi değiştirildi. Yazılmasaydı Gorevli şeklinde olacaktı.
Hiç yorum yok:
Yorum Gönder