24 Haziran 2016 Cuma

Hibernate Anotasyonlar (@Table, @Column)


@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.

@Column(name="AD")
ş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 IDE
Maven 3.3.9
Hibernate 4.0.1.Final
MySQL 5.1





1-Proje





2-Entity (Model) Sınıfı

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