24 Haziran 2016 Cuma

Hibernate Anotasyonlar (@Embebded, @Embebdable)


@Embebded

Başka bir sınıftan bir nesnenin gömüleceğini belirtmek için kullanılır.

@Embebdable

Başka bir sınıf tarafından kullanılacağını gömüleceğini belirtmek için kullanılır. Dikkat edilmesi gereken bu sınıf artık Entity sınıfı değildir. @Entity anotasyonu kullanılmaz.
Bu iki anotasyon belirtildiği şekilde kullanılırsa iki  sınıfından sadece bir tabloya haritalama yapı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ıfları

Kullanici.java

package com.hasanburakavci;


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

@Entity
public class Kullanici {
        @Id
        @GeneratedValue(strategy=GenerationType.AUTO)
        private int id;
        private String ad;
        private String soyad;
        @Embedded
        //Adres sınıfından bilgiler gömülecek
        private Adres adres;
        //-----------Setter-Getter--------
 
 
}

@Embedded ile Adres sınıfından adres nesnesini projeye dahil ettik. Set ve get metodlarını da yazıyoruz.


Adres.java

package com.hasanburakavci;

import javax.persistence.Embeddable;

        @Embeddable
        //Bir Entity sınıfı tarafından çağırılıp kendi alanına kaydedilecek (Gömülecek).
        public class Adres {
        private String Eyalet;
        private String il;
        //-----------Setter-Getter--------  

  
}


@Embedable ile Adres sınıfının başka sınıflar tarafından çağırılacağını söyledik.




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();
          //Adres sınıfında adres nesnesi üretiliyor.
          Adres adres = new Adres();
          adres.setEyalet("Kaliforniya");
          adres.setIl("San Francisco");
          //Kullanici sınıfından kullanici1 nesnesi üretiliyor.
          Kullanici kullanici1 = new Kullanici();
          kullanici1.setAd("Hasan burak");
          kullanici1.setSoyad("Avci");
          //kullanici1 nesnesine adres nesnesi set ediliyor.
          kullanici1.setAdres(adres);
  
          try {
               session.beginTransaction();
                    //Olusturulan kullanici1 kaydediliyor.
                    session.save(kullanici1);
               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.Kullanici"/>
</session-factory>
</hibernate-configuration>



7-Konsol

.
.
.
INFO: HHH000396: Updating schema
Haz 17, 2016 4:49:27 PM org.hibernate.tool.hbm2ddl.DatabaseMetadata getTableMetadata
INFO: HHH000262: Table not found: Kullanici
Haz 17, 2016 4:49:27 PM org.hibernate.tool.hbm2ddl.DatabaseMetadata getTableMetadata
INFO: HHH000262: Table not found: Kullanici
Haz 17, 2016 4:49:27 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000232: Schema update complete
Hibernate: insert into Kullanici (ad, Eyalet, il, soyad) values (?, ?, ?, ?)

ad, Eyalet, il ve soyad kolonlarının tabloya eklendiğini belirtiyor.



8-Veritabanı Tablosu


Entity sınıfının içinde Eyalet ve il kolonları yoktu. Adres sınıfını gömdüğümüz için adres sınıfı değişkenleri tabloya dahil oldu.

1 yorum:

  1. 8 Casino Online in New York State - XN-O80B910a26eepc81il5g
    8 Casino Online 퍼스트 카지노 in New York 카지노 State, New York, USA - Choose from 8 Casino Online in 우리카지노 New York State!

    YanıtlaSil