Tutorial Spring dan Hibernate


springhibernate

Hibernate

Hibernate adalah Objek Relational Mapping (ORM) library dalam Java, yang menyediakan framework untuk memetakan Objek-Oriented Domain model ke Relational Database. Fitur utama dalam hibernate adalah kemampuannya untuk memetakan kelas-kelas pada Java dengan table-table yang terdapat dalam database. Hibernate juga menyediakan query data dan fasilitas temu kembali. Dengan menggunakan Hibernate, developer hampir tidak akan pernah menyentuh database secara langsung. Hibernate juga akan meng-cover perbedaan dialek SQL pada DBMS.

Spring Framework

Spring Framework adalah salah satu framework yang paling populer di dunia pemrograman Java. Framework ini memiliki banyak fitur untuk memudahkan pembuatan aplikasi. Beberapa keunggulan yang dimiliki Spring adalah:

  • Mudah dipelajari
  • Tidak terlalu invasif
  • Helper class yang banyak
  • Mendukung AOP
  • Menyediakan integrasi dengan framework lain

Spring Framework sebenarnya menggunakan teknik pemrograman yang sederhana. Seperti kita akan lihat pada pembahasan tentang IoC, model pemrograman dengan Spring mudah, tapi rapi. Ini memudahkan para pemula untuk mempelajarinya. Dengan mempelajari Spring Framework, kita juga berevolusi menjadi programmer yang lebih baik. Ini dimungkinkan karena Spring Framework mendorong kita untuk membuat kode program yang modular dan independen. Hasil akhirnya, kode program yang kita hasilkan menjadi lebih rapi, mudah dites, dan terstruktur dengan baik. Spring Framework tidak terlalu invasif. Artinya, Spring tidak mengharuskan kita untuk meng-extend kelas-kelas yang dimiliki Spring. Oleh karena itu, kode program yang kita hasilkan tidak terlalu terikat dengan Spring. Spring memiliki banyak helper class. Helper class adalah class yang berguna untuk memudahkan pekerjaan pemrograman kita. Dengan menggunakan helper class, aplikasi kita dapat diselesaikan dengan jumlah kode yang lebih sedikit (Muhardin, 2008).

Latar Belakang Pembaca

Pembaca diasumsikan sudah menguasai:

  • Dasar Pemrograman Java
  • JDBC
  • Syntax SQL
  • IDE Netbeans

Praktik

Membuat Java Project

Untuk membuat Java Project di NetBeans, langkah yang harus dilakukan yaitu bukalah NetBeans IDE kemudian pilih menu File   >   New   Project kemudian pada pilihan Categories pilihlah Java  dan Java   Application pada pilihan Projects setelah itu tekanlah tombol Next. Pada jendela berikutnya, isikan HibernateSpringTutorial pada kolom isian Project Name kemudian tekanlah tombol Finish. Pastikan  Create Main Class sudah terpilih. Sehingga akan diperoleh tree pada jendela projek seperti gambar di bawah ini:

Membuat Database

DBMS yang akan digunakna adalah derby. Secara default Derby sudah terinstall ketika Anda menginstall Netbeans. Di sebelahk kanan anda akan melihat jendela Services, pilih jendela itu. Expand databases, klik kanan pada Java DB, pilih Create Database.

Database Name: Phone_Book

Username: userKamu

Password: passwordKamu

Menambah Library

Klik kanan pada folder Libraries, kemudian pilih Add Library. Pada jendela Add Library yang muncul pilih Hibernate JPA dan Spring Framework 3.0.2.RELEASE. Selain dua itu, masih dibutuhkan juga tiga file jar berikut:

commons-dbcp.jar

commons-pool.jar

derbyclient.jar

Cara menambahkan file jar: klik kanan >  Add JAR/Folder. Jika anda belum memiliki tiga file jar di atas, silahkan download di sini.

Membuat Package Model

Expand source package, klik kanan pada package hibernateSpringTutorial, kemudian New > Java Package. Isikan hibernateSpringTutorial.model pada Package Name.

Membuat Kelas POJO (Group.java)

Klik kanan package hibernateSpringTutorial.model yang baru saja dibuat, kemudian pilih New > Java Class. Berikan nama: Group. Lengkapi class User.java sehingga menjadi seperti ini:

public class Group {
    private int id;
    private String nama;

    //constructor
    //method getter dan setter
}

Membuat Kelas POJO (User.java)

Klik kanan package hibernateSpringTutorial.model yang baru saja dibuat, kemudian pilih New > Java Class. Berikan nama: Group. Lengkapi class User.java sehingga menjadi seperti ini:

public class User {
    private int id;
    private String nama;
    private Group group;

    //constructor
    //method getter dan setter
}

Menambahkan Anotation pada POJO

Penambahan annotation bertujuan untuk melakukan mapping kelas POJO dengan table pada database. Pada Group.java, tambahkan annotation sehingga menjadi:

package hibernateSpringTutorial.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table (name="PB.GROUPS")
public class Group {
    @Id
    @GeneratedValue (strategy=GenerationType.AUTO)
    @Column (name="ID_GROUP")
    private int id;

    @Column (name="NAMA_GROUP")
    private String nama;

    //constructor
    //method getter dan setter
}

User.java

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table (name="PB.USERS")
public class User {
    @Id
    @GeneratedValue (strategy=GenerationType.AUTO)
    @Column (name="ID_USER")
    private int id;

    @Column (name="NAMA_USER")
    private String nama;

    @ManyToOne
    @JoinColumn (name="ID_GROUP")
    private Group group;

    //CONSTRUCTOR
    //METHOD GETTER DAN SETTER
}

Membuat Data Access Object (DAO)

Klik kanan pada hibernateSpringTutorial, kemudian pilih New > Java Package. Masukan nama:  hibernateSpringTutorial.dao. Klik kanan pada  hibernateSpringTutorial.dao, kemudian pilih New > Java Interface, masukan nama: GroupDao.

public interface GroupDao {
    public void saveGroup(Group group);
    public Group getGroup(int id);
    public List<Group> getGroups();
    public void removeGroup();
}

Lakukan proses yang sama, buat interface UserDao.java

public interface UserDao {
    public void saveUser(User user);
    public User getUser(int id);
    public List<User> getUsers();
    public void removeUser();
}

Membuat Implementasi DAO

Klik kanan pada  hibernateSpringTutorial.dao kemudian pilih New > Java Package. Masukan nama:  hibernateSpringTutorial.dao.hibernate. Klik kanan pada package yang baru saja dibuat kemudian, pilih New > Java Class, masukan nama: BaseDaoHibernate

import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;

public class BaseDaoHibernate {
    protected HibernateTemplate hibernateTemplate;

    public void setSessionFactory(SessionFactory sessionFactory){
        this.hibernateTemplate = new HibernateTemplate(sessionFactory);
    }
}

hibernateSpringTutorial.dao.hibernate.GroupDaoHibernate

import hibernateSpringTutorial.dao.GroupDao;
import hibernateSpringTutorial.model.Group;
import java.util.List;

public class GroupDaoHibernate extends BaseDaoHibernate implements GroupDao{

    public void saveGroup(Group group) {
        hibernateTemplate.saveOrUpdate(group);
    }

    public Group getGroup(int id) {
        return hibernateTemplate.get(Group.class, id);
    }

    public List<Group> getGroups() {
        return hibernateTemplate.find("from Group");
    }

    public void removeGroup(int id) {
        hibernateTemplate.delete(getGroup(id));
    }

}

hibernateSpringTutorial.dao.hibernate.UserDaoHibernate

package hibernateSpringTutorial.dao.hibernate;

import hibernateSpringTutorial.dao.UserDao;
import hibernateSpringTutorial.model.User;
import java.util.List;

public class UserDaoHibernate extends BaseDaoHibernate implements UserDao{

    public void saveUser(User user) {
        hibernateTemplate.saveOrUpdate(user);
    }

    public User getUser(int id) {
        return hibernateTemplate.get(User.class, id);
    }

    public List<User> getUsers() {
        return hibernateTemplate.find("from User");
    }

    public void removeUser(int id) {
        hibernateTemplate.delete(getUser(id));
    }

}

Konfigurasi Spring

Klik kanan pada Source Package, kemudian pilih New > Other. Pada Categories pilih Other, dan pada File Types pilih: Spring XML Configuration File. Klik Next, masukan nama Spring. Pada step terakhir, untuk lebih memudahkan pilih semua namespace. Finish. JANGAN PANIK, ya, Anda jangan panik melihat tulisan XML yang aneh itu. Abaikan tulisan yang banyak itu. Lihat codenya dengan enjoy, dan sebenernya gampang aja:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:flow="http://www.springframework.org/schema/webflow-config"
       xmlns:jms="http://www.springframework.org/schema/jms"
       xmlns:jee="http://www.springframework.org/schema/jee"
       xmlns:lang="http://www.springframework.org/schema/lang"
       xmlns:osgi="http://www.springframework.org/schema/osgi"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:p="http://www.springframework.org/schema/p"

       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
          http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
          http://www.springframework.org/schema/webflow-config http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd
          http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.0.xsd
          http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
          http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-3.0.xsd
          http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi-3.0.xsd
          http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
          http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd
">

    <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="org.apache.derby.jdbc.ClientDriver"/>
        <property name="url" value="jdbc:derby://localhost:1527/phone_book"/>
        <property name="username" value="userKamu"/>
        <property name="password" value="passwordKamu"/>
    </bean>

    <bean id="mySessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="myDataSource" />
	<property name="annotatedClasses">
            <list>
                <value>hibernateSpringTutorial.model.User</value>
                <value>hibernateSpringTutorial.model.Group</value>
            </list>
	</property>
	<property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.DerbyDialect</prop>
		<prop key="hibernate.show_sql">true</prop>
		<prop key="hibernate.hbm2ddl.auto">validate</prop>
            </props>
	</property>
    </bean>

    <!--Group Dao-->
    <bean id="daoGroup" class="hibernateSpringTutorial.dao.hibernate.GroupDaoHibernate">
        <property name="sessionFactory" ref="mySessionFactory"/>
    </bean>

    <!--User Dao-->
    <bean id="daoUser" class="hibernateSpringTutorial.dao.hibernate.UserDaoHibernate">
        <property name="sessionFactory" ref="mySessionFactory"/>
    </bean>

</beans>

Menyimpan Data ke Database

Ini adalah bagian akhir dari tutorial ini. Infrastruktur untuk hibernate dan spring sudah dibuat, sekarang tinggal pakai saja. Tambahkan pada class Main (hibernateSpringTutorial.Main.java) code berikut:

import hibernateSpringTutorial.dao.GroupDao;
import hibernateSpringTutorial.model.Group;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {
    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:spring.xml");
        GroupDao groupDao = (GroupDao) ctx.getBean("daoGroup");
        Group g = new Group();
        g.setNama("Keluarga");
        groupDao.saveGroup(g);
    }
}

About windupurnomo

I'm interested in programming. I am active with several programming such as Java, C #, C, JavaScript, HTML. I'm also develop desktop application (Java Swing), Mobile Application (Android), and Web programming (ASP MVC).
This entry was posted in Java, Netbeans and tagged , , , , , , , , , , , , . Bookmark the permalink.

14 Responses to Tutorial Spring dan Hibernate

  1. rofianto says:

    Wah.. makasih infonya boz…
    Langsung DicoBa..😀

  2. zaini akhsan says:

    mz boleh minta sample sourcecodenya tidak?🙂

  3. untuk bagian validate
    validatenya diganti create untuk membuat table

    • windupurnomo says:

      ya, kalo table nya ga ada, table akan di create.
      Tinggal ubah bagian ini:

      <prop key="hibernate.hbm2ddl.auto">validate</prop>

      Menjadi ini:

      <prop key="hibernate.hbm2ddl.auto">create</prop>

  4. matt says:

    mohon bimbinganx mas……msh newbie ni🙂

  5. caviezeljim says:

    download commons-dbcp.jar, commons-pool.jar, derbyclient.jar dimana ya mas?

  6. dab says:

    tutorial yang pake session factory ada mas ?

  7. kok ngga ada query create table group dan table user? bisa disertakan struktur database-nya mas?

  8. script yang ini kok bikin error ya,
    ApplicationContext ctx = new ClassPathXmlApplicationContext(“classpath:Spring.xml”);
    kenapa ya?

    Oct 4, 2012 3:07:43 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
    INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@f7e6a96: startup date [Thu Oct 04 15:07:43 WIT 2012]; root of context hierarchy
    Oct 4, 2012 3:07:44 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    INFO: Loading XML bean definitions from class path resource [Spring.xml]
    Oct 4, 2012 3:07:44 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
    INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@3c3c9217: defining beans [myDataSource,mySessionFactory,daoGroup,daoUser]; root of factory hierarchy
    Oct 4, 2012 3:07:44 PM org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons
    INFO: Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@3c3c9217: defining beans [myDataSource,mySessionFactory,daoGroup,daoUser]; root of factory hierarchy
    Exception in thread “main” org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.apache.commons.dbcp.BasicDataSource] for bean with name ‘myDataSource’ defined in class path resource [Spring.xml]; nested exception is java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1262)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:576)
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1331)
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:897)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:566)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
    at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:83)
    at hibernateSpringTutorial.HibernateSpringTutorial.main(HibernateSpringTutorial.java:23)
    Caused by: java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource

    • Vyor Oppier says:

      Kelas BasicDataSource dalam classpath project yang dibuat itu belum ada. cari dulu librarynya tambahkan ke classpath project. Kalau editor yang digunakan menggunakan Netbeans, bisa ditelusuri letak library untuk database JavaDerby di folder instalasi netbeans.

      Semoga membantu🙂

      http://vyor.wordpress.com

  9. Bagus sekali mas tutorialnya……
    Tapi koq gak ada sourcecode projectnya???
    Yang udah dizip g2 maksudnya….
    Khan bisa membantu sekali tuch …

    Ane tungguh zip nya….
    Hehhehehe

    Syukron

  10. faisal arkan says:

    thanks gan sangat membatu,,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s