29 Haziran 2015 Pazartesi

Hibernate ile CRUD işlemleri

Merhaba,
bu yazımda sizlere hibernate ile veritabanı üzerinde  CRUD(kayıt oluşturma ,silme , güncelleme , listeleme) nasıl yapıldığını göstereceğim.

Aşağıda dikkat etmeniz gereken noktaların açıklamalarını yazacağım ve yazının sonunda da projenin kaynak kodlarını yine sizlerle paylaşıyor olacağım.

1 -) java application projesi oluşturun. Dizin yapısının alışılagelmiş biçimde olması için ben spring application projesi oluşturdum. Normalde bu yazının spring ile bir bağlantısı yoktur.

proje yapısı aşağıdaki gibi olacaktır:




2 -) Pom.xml 'e hibernate ve mysql bağımlılığını tanımlayın. Ayrıca hibernate in bağımlılıklarından biri de log4j dir.

 <!--MySQL database driver-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.9</version>
</dependency>



 <!--Hibernate -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>3.6.3.Final</version>
</dependency>

<dependency>
    <groupId>javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.12.1.GA</version>
</dependency>


 <!-- slf4j-log4j -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.6.1</version>
</dependency>



3 -) hibernate.cfg.xml ile hibernate erişim ayarlarını yapın. Hangi veri tabanına bağlanacağını , hangi entity ile işlem yapacağını , kullanıcı adını , şifresini ve veri tabanı türünü belirtin.

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost/test_spring</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">12345678</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="show_sql">true</property>
        <mapping class="com.company.entities.Person" ></mapping>
    </session-factory>
</hibernate-configuration> 






4 -)  HibernateUtil.java dosyasında bir static session oluşturalım. Hibernate bilgileri session üzerinde güncelleyerek veri tabanıyla eşleştirir.



 public class HibernateUtil {

    private static final SessionFactory SESSION_FACTORY  = new Configuration().configure().buildSessionFactory();


    public static SessionFactory getSession(){
        return SESSION_FACTORY;
    }

    public static void closeSession(){
        getSession().close();
    }

}


5 -)  Create(oluşturma) İşlemi

         Session session = HibernateUtil.getSession().openSession();

//        CREATE
        session.beginTransaction();
        Person person = new Person();

        person.setCreatedate(new Date());
        person.setAge(33);
        person.setName("ali");
        person.setLastname("veli");

        session.save(person);
        session.getTransaction().commit();


SQL:
 CREATE TABLE `persons` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `lastname` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `createdate` date NOT NULL,
  PRIMARY KEY (`id`)
)

Yazı kısa olsun diye daha fazla detaya girmiyorum. anlaşılmayan bir yer olursa çekinmeden sorabilirsiniz.

kaynak dosyalar(github) : indirmek için tıklayın

2 yorum:

  1. İyi günler maven+jsf için bu durum nasıl olacak tabloların @entity ile oluşmasını istiyorum anlatabilir misiniz?

    YanıtlayınSil
    Yanıtlar
    1. Merhaba, anlatırım tabiki. Ancak bu aralar biraz yoğunum ilk fırsatta bir örnekle birlikte paylaşacağım.

      Sil