24 Haziran 2016 Cuma

Hibernate Anotasyonlar (@Entity, @Id, @GeneratedValue)

@Entity


Entity(Varlık) anotasyonu sadece sınıflar için kullanılır.  @Entity yazan sınıflar artık Entity sınıfı olmaktadır. Veritabanına haritalanmasını istediğimiz sınıfın üzerine yazılması gerekmektedir.

@Id


Her nesnenin veritabanında bir kimliği(Identity) olur. Bu anotasyon ile Entity sınıfının identity(kimliği) belirlenmiş olur.

@GeneratedValue


Id değerinin veritabanında nasıl artacağına karar veren mekanizmadır. Çeşitli stratejilere sahiptir. Varsayılan stratejisi (strategy=GenerationType.AUTO)'dur. Yani her nesne eklendiğinde veritabanında id alanı birer birer artar. İlk id değeri 1'dir.


0-Kullanılan Teknolojiler

Eclipse IDE
Maven 3.3.9
Hibernate 4.0.1.Final
MySQL 5.1


1-Proje Mimarisi






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


Gorevli.java


package com.hasanburakavci;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Gorevli {
        @Id
        @GeneratedValue(strategy=GenerationType.AUTO)
        private int id;
        private String ad;
        private String soyad;

 //-------------SETTER--GETTER-----------
        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 String getSoyad() {
               return soyad;
        }
        public void setSoyad(String soyad) {
               this.soyad = soyad;
        }
}



3-HibernateUtil Sınıfı


package com.hasanburakavci.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

    private static final SessionFactory sessionFactory = buildSessionFactory();
    //SessionFactory oluşturuluyor.
    private static SessionFactory buildSessionFactory() {
        try {
            return new Configuration().configure().buildSessionFactory();
        }
        catch (Throwable ex) {
            //Hata meydana gelirse konsola hata mesajı yazdırılıyor.
            System.err.println("SessionFactory oluşturulurken hata oluştu." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }
    //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ılıp Session oluşturuluyor.
          Session session= HibernateUtil.getSessionFactory().openSession();
  
          //Gorevli sınıfından yeni bir nesne oluşturuluyor.
          Gorevli gorevli1=new Gorevli();
          gorevli1.setAd("Hasan Burak"); //adı Hasan Burak olarak eklendi.
          gorevli1.setSoyad("Avci");     //soyadı Avci olarak eklendi.
  
          try {
               session.beginTransaction();
                    //oluşturulan gorevli1 nesnesi veritabanına kaydediliyor.
                    session.save(gorevli1);
               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"></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.hasanburakavci.Gorevli"/>
</session-factory>
</hibernate-configuration>


7-Konsol

.
.
.

INFO: HHH000262: Table not found: Gorevli
Haz 16, 2016 9:51:08 PM org.hibernate.tool.hbm2ddl.DatabaseMetadata getTableMetadata
INFO: HHH000262: Table not found: Gorevli
Haz 16, 2016 9:51:09 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000232: Schema update complete
Hibernate: insert into Gorevli (ad, soyad) values (?, ?)


8-Veritabanı Tablosu


HibernateApplication.java sınıfı birkez Run edilirse veritabanına bir kayıt eklenir.






İkinci kez Run edilirse bir kayıt daha eklenir ve toplamda iki adet kayıt olur. (@GeneratedValue anotasyonu kullanıldığı için id değeri otomatik birer birer artıyor.)





1 yorum:

  1. Top 4 Casino (2021) - Tricktactoe
    Best casino? 오즈 포탈 · Online casinos. · Mobile 배당 사이트 casino sites 롤 e 스포츠 · 안전 토토사이트 Bingo site. · Online 체크 토토 넷마블 casino. · Online casino. · Online casino.

    YanıtlaSil