@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.
Maven 3.3.9
Hibernate 4.0.1.Final
MySQL 5.1
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 IDEMaven 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 (?, ?, ?, ?)
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.
8 Casino Online in New York State - XN-O80B910a26eepc81il5g
YanıtlaSil8 Casino Online 퍼스트 카지노 in New York 카지노 State, New York, USA - Choose from 8 Casino Online in 우리카지노 New York State!