Malam ini saya ingin sekali menyelesaikan sedikit code yang semestinya kita kerjakan bersama..
Maklum, sudah tidak sabar untuk membuka netbeans..
Saya hanya membuat hibernate mapping nya saja, serta DAO + Implementasinya..
Selebihnya untuk Struts nya saya harus break dulu, takut nanti teman satu team saya malah tidak kebagian pekerjaan.. hehehe…
Langsung saja yah, ini belum saya commit koq, termasuk 1 post sebelumnya tentang perubahan di list jugers yang saya buat..
Pertama, saya buat hibernate mapping dan POJO nya untuk entity “Article”..
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.jug.joglosemar.entity;
/**
*
* @author Wilbert
* Class ini melambangkan tabel Article di database
* yang nantinya digunakan untuk menampilkan artikel-artikel
*/
public class Article
{
private long id;
private String title;
private String detail;
private long datePost;
private Jugers author;
public Article() {}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDetail() {
return detail;
}
public void setDetail(String detail) {
this.detail = detail;
}
public long getDatePost() {
return datePost;
}
public void setDatePost(long datePost) {
this.datePost = datePost;
}
public Jugers getAuthor() {
return author;
}
public void setAuthor(Jugers author) {
this.author = author;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class table="article" dynamic-insert="false" dynamic-update="false" mutable="true" name="org.jug.joglosemar.entity.Article" optimistic-lock="version" polymorphism="implicit" select-before-update="false">
<id name="id" column="article_id">
<generator class="native"/>
</id>
<property name="title" column="title" type="string" length="150"/>
<property name="detail" column="detail" type="string" length="500"/>
<property name="datePost" column="date_post" type="long"/>
<many-to-one name="author" column="author" class="org.jug.joglosemar.entity.Jugers"/>
</class>
</hibernate-mapping>
Lalu setelah itu, saya tambahkan mapping tersebut ke dalam file konfigurasi hibernate.., yaitu di file hibernate.cfg.xml.. Berikut isi filenya :
<?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 name="session">
<!-- <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/joglosemar</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"/>-->
<!-- we use datasource -->
<property name="hibernate.connection.datasource">java:/comp/env/jdbc/joglosemar
</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect
</property>
<property name="current_session_context_class">thread
</property>
<property name="show_sql">true
</property>
<property name="hbm2ddl.auto">create
</property>
<mapping resource="org/jug/joglosemar/entity/Jugers.hbm.xml"/>
<mapping resource="org/jug/joglosemar/entity/News.hbm.xml"/>
<mapping resource="org/jug/joglosemar/entity/Event.hbm.xml"/>
<mapping resource="org/jug/joglosemar/entity/Article.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Dan langkah yang terakhir adalah membuat DAO + Implementasinya.. Berikut ini saya akan tampilkan DAO + Implementasi yang sudah saya buat..
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.jug.joglosemar.dao;
import java.util.List;
import org.jug.joglosemar.entity.Article;
/**
*
* @author Wilbert
*/
public interface ArticleDAO
{
public void insert(Article artc) throws Exception;
public void delete(Article artc) throws Exception;
public void update(Article artc) throws Exception;
public Article load(long id) throws Exception;
public List<Article> getAllArticles() throws Exception;
public List<Article> getLastArticles() throws Exception;
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.jug.joglosemar.dao.hbm;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;
import org.jug.joglosemar.dao.ArticleDAO;
import org.jug.joglosemar.entity.Article;
import org.jug.joglosemar.util.HibernateUtil;
/**
*
* @author Wilbert
* Implementasi DAO untuk query ke database
*/
public class ArticleDAOImpl implements ArticleDAO
{
public void insert(Article artc) throws Exception {
HibernateUtil.beginTransaction();
Session session = HibernateUtil.getSession();
try{
session.save(artc);
}catch(Exception ex){
throw ex;
}
}
public void delete(Article artc) throws Exception {
HibernateUtil.beginTransaction();
Session session = HibernateUtil.getSession();
try{
session.delete(artc);
}catch(Exception ex){
throw ex;
}
}
public void update(Article artc) throws Exception {
HibernateUtil.beginTransaction();
Session session = HibernateUtil.getSession();
try{
session.update(artc);
}catch(Exception ex){
throw ex;
}
}
public Article load(long id) throws Exception {
HibernateUtil.beginTransaction();
Session session = HibernateUtil.getSession();
Article artc = null;
try{
artc = (Article)session.load(Article.class,id);
}catch(Exception ex){
throw ex;
}
return artc;
}
public List<Article> getAllArticles() throws Exception {
HibernateUtil.beginTransaction();
Session session = HibernateUtil.getSession();
List<Article> list = new ArrayList<Article>();
try{
list = session.createQuery("from Article").list();
}catch(Exception ex){
throw ex;
}
return list;
}
public List<Article> getLastArticles() throws Exception {
HibernateUtil.beginTransaction();
Session session = HibernateUtil.getSession();
List<Article> list = new ArrayList<Article>();
try{
list = session.createQuery("from Article order by date_post desc limit 0,10").list();
}catch(Exception ex){
throw ex;
}
return list;
}
}
Selesai sudah untuk pembuatan entitynya.. Perlu diperhatikan juga (bagi yang merasa team saya), kita bermain dengan 2 framework, yaitu Struts dan Hibernate.. Maka harus dipastikan kita bisa membedakan keduanya.. Jangan dicampur adukkan..! Sekarang kita coding dulu Hibernate nya, setelah itu baru kita bermain Struts nya..
Saya rasa kalau satu per satu cara memikirkannya malah lebih bagus, karena ada kerangka berpikir yang terstruktur, yaitu Struts dan Hibernate..
Mari kita membuat Struts nya hari Selasa nanti! 