ORM Framework dan JEE Pattern dalam Aplikasi Enterprise Resource Planning Dian Indah Savitri G64104035 Pembimbing 1 : wisnu ananta kusuma, S.t.,m.t. Pembimbing 2 : toto haryanto,s.kom.
pendahuluan
Latar Belakang ERP aplikasi enterprise yang menyatukan aktivitas bisnis perusahaan. Aplikasi ERP menghubungkan transaksi bisnis to bisnis, bisnis to customer, perhitungan financial, dan human resource.(Parr 2000) B2C B2B
Arsitektur ERP yang diakomodari oleh Java EE (MVC) View Controller Model Presentation Layer Graphical User Interface Browser utk data entry Akses thd fungsi sistem Application Layer Business rules, logika, fungsi program terhadap data yang diterima/ ditransfer dari/ke server database. Database Layer Manajemen data transaksi termasuk didalamnya metadata. Rashid, et. al 2002
Mismacth paradigm Granularity Subtypes Identity Assosiation Pengembangan aplikasi enterprise berbasis objek Basisdata Realsional Obejct Relational Mapping Granularity Subtypes Identity Assosiation Navigasi data Bauer dan King 2007
Tujuan penelitian Menganalisis ketidaksesuaian yang muncul dari rancangan sistem Retail ERP yang dikembangkan Ernita (2008) dan basis data relasional yang digunakan. Menerapkan konsep ORM untuk mengatasi masalah ketidaksesuaian tersebut. Memanfaatkan konsep design pattern dalam akses basis data oleh lapisan aplikasi.
Manfaat penelitian pemeliharaan dan pengelolaan manajemen basis data pada pengembangan sistem ERP selanjutnya. menghemat koneksi pada server basis data
Tinjauan pustaka
Enterprise Resource Planning suatu aplikasi terintegrasi yang berkonsentrasi untuk menyatukan aktivitas proses transaksi enterprise. Beberapa inti modul ERP yang ditemukan pada sistem ERP yaitu (Rashid et. al 2002): Manajemen akuntasi, manajemen keuangan, manajemen manufacturing, manajemen produksi, manajemen transportasi, manajemen penjualan dan distribusi, manajemen sumberdaya manusia, Supply Chain Management (SCM), Customer Relationship Management (CRM), dan E-business Rashid et. al 2002
Object Persistence objek yang dihasilkan dari suatu sistem yang dapat disimpan dalam waktu lama bahkan bersifat permanen. disimpan dalam bentuk basis data relasional, file system dalam harddisk, file XML, Web Service, ODBMS (Object Data Base Management System), dan LDAP. Peak dan Heudecker 2006
Object Relational Mismatch ketidaksesuaian antara basis data yang menggunakan konsep relasional dengan pengembangan aplikasi yang menggunakan konsep berorientasi objek. Ketidaksesuaian tersebut meliputi aspek: Granularity Subtypes Identity Asosiasi Navigasi data Bauer dan King 2007
Object Relational Mapping sebuah framework yang mengatasi perbedaan sistem basis data yang bersifat relational dengan paradigma pengembangan aplikasi yang berorientasi objek. menjembatani dialek SQL yang digunakan. Bauer dan King 2007
Design Pattern unsur-unsur rancangan yang seringkali muncul pada berbagai jenis sistem. merupakan katalog permasalahan beserta solusi yang sudah teruji dalam perancangan sistem. DAO pattern : pola yang mengenkapsulasi data akses dan manipulasi ke dalam lapisan yang berbeda. Service pattern (facade) : pola yang mengintegrasikan DAO-DAO pattern ke dalam lapisan baru yang disebut Service. Alur et al. 2003
Design pattern (cont..) Singleton : adalah pola yang hanya mempunyai satu instansiasi dari suatu class yang dipakai pada sistem tertentu. Proxy : adalah pola yang merancang suatu objek mewakili kontrol atau akses objek lain bertindak seolah-oleh objek tersebut melakukannya. Factory method : pola untuk mengenkapsulasi suatu objek dan diinstasiasi satu kali untuk digunakan berulang-ulang.
Declarative transaction suatu teknik untuk medeklarasikan semua transaksi dalam suatu file konfigurasi untuk menangani semua proses transaksi tanpa harus membuat kode-kode program untuk menangani transaksi secara eksplisit. mengatur rollback (method dan exception) apabila terjadi kegagalan transaksi Walls dan Beidenbach 2005
Inversion of Control Disebut juga Dependency Injection. adalah suatu konsep yang diterapkan oleh suatu objek untuk mendapatkan objek lain yang dibutuhkan tanpa harus mencari dan memasukan objek tersebut secara eksplisit. Walls dan Beidenbach 2003
Metode penelitian
Analisis kebutuhan ORM Metode Penelitian Studi literatur Analisis kebutuhan ORM Implementasi ORM evaluasi
HASIL DAN PEMBAHASAN
Deskripsi umum Modul pembelian Purchase Requisition (PR) Request for Quotation (RFQ) Purchase Order (PO) Demand Order (DO) Goods Receive Manajemen Inventory Modul akuntansi Jurnal buku besar (General Ledger) Invoices dan payment Account Payable Account Payment Managemen COA (Code of Account) Modul Penjualan Katalog barang Add to Cart Pelanggan Pengantaran
Analisis mismatch Granularity Basis data relasional tidak mengenal user-defined-data-type RFQ mempunyai beberapa Price akan dimapping ke satu tabel. RFQDetail Price
Analisis mismatch (cont..) Identitas Basis data primary key Java lokasi memory (==) Secara lojik sama (equals()) Navigasi data perbedaan mekanisme mengakses data pada objek dan tabel. Basis data menggunkan SQL (query join) Java method getter
Analisis mismatch (cont..) Asosiasi One-to-one One-to-many Many-to-many
Membuat DTO dan menghilangkan mismach Membuat konfigurasi basis data dan hibernate public class Product{ private int id; private String prodName; private Double unitPrice; //getter and setter method} Prod_ID Prod_name Unit price 1 pupuk 100 2 bibit 200
Penanganan mismatch Granularitas RFQ mempunyai beberapa Price akan dimapping ke satu tabel. Ada tipe data Price pada class RFQ. Entitas price menentukan entitas RFQ. Disebut juga parent child Cascade = {CascadeType.PERSIST, CascadeType.REMOVE}, fetch = FetchType.EAGER)
Penanganan mismatch (cont..) Identitas Menambah property @Id pada setiap entitas. @Entity @Table(name = "IN_ITEM") public class InventoryItem{ @Id @GeneratedValue (strategy=GenerationType .AUTO) @Id merepresentasikan suatu primary key, dan secara lojik berbeda dengan id entitas lainnya.
Penanganan mismach (cont..) Asosiasi One-to-one Join column berada pada entitas yang total participant. @OneToOne @JoinColumn (name = " id_ pu_ order") apabila asosiasinya bidirectional @OneToOne (mappedBy="order") private PurchaseDemand purDemand;
Penanganan mismach (cont..) Asosiasi (cont..) One-to-many Join column berada pada entitas dengan kardinalitas many. @ManyToOne @JoinColumn ( name = " id_pu_requisition") private Requisition requisition; Apabila asosiasinya bidirectional @OneToMany (mappedBy = "requisition") private List <RequisitionDetail> requisitionDetail = new ArrayList <RequisitionDetail>();
Penanganan mismatch Asosiasi (cont..) Many-to-many Join tabel berada pada entitas total participant Menghasilkan 1 tabel hasil asosiasi @ManyToMany @JoinTable(name= "ad_modul_group", joinColumns={@JoinColumn(name= "id_ad_modul")}, inverseJoinColumns={@JoinColumn(name="id_ad_group")}) private List <AdminGroup> adminGroups=new ArrayList <Admin Group>(); Apabila mappingnya bidirectional @ManyToMany(mappedBy="adminGroups") private List <AdminModul> admin Moduls = new ArrayList<AdminModul>();
Penanganan mismatch Navigasi data Bagaimana cara mengakses objek dari objek lain. Arah navigasi Unidirectional Bidirectional invProdBrand.getInItem.getName(); Pada basis data tidak mengenal arah navigasi, akses tabel dari tabel lain menggunakan join Select name from IN_ITEM i left outer join IN_PROD_BRAND pb on i.id=pb.id where i.id=123
Fungsi akses data menerapkan DAO, singleton, factory method patttern DAO pattern Akses dan manipulasi data Berisi fungsi-fungsi (saveOrUpdate(insert dan update), delete, getAll (select *), getById (select * from CLASS where id = ?), dll ) Singleton pattern Objek dataSource Berisi properti koneksi basis data. Objek sessionFactory Membuat objek Session yang bertanggungjawab selama transaksi (begin, commit, rollback).
Fungsi akses data (cont..) Objek dataSource dan sessionFactory dibuat dan dimasukan ke dalam objek DAO. Menggunkan teknik Dependency Injection atau Inversion of Control. Oleh Spring Framework
Penyederhanaan fungsi akses data menggunakan façade dan proxy pattern 50 objek DTO, masing-masing mempunyai objek DAO untuk akses data (save, update, delete, get, dll) Façade pattern menyederhanakan DAO ke dalam lapisan Service sesuai dengan submodulnya. Menghasilkan 7 interface Service. Service penguhubung dengan lapisan aplikasi
Penyederhanaan fungsi akses data (cont..) Service dipanggil oleh lapisan aplikasi. Proxy pattern teknik declatarive transaction. Service tidak mengaskes daa secara langsung Memanggil “moduleXXXService” pada hibernate.ctx.xml Membuat class proxy yang berisi fungsi-fungsi untuk transaksi (begin, comit, rollback). Fungsi-fungsi tersebut dimasukan ke dalam obje Session melalui method getHibernateTemplate(). Tidak perlu menuliskan transaksi secara programatik.
Declarative transaction <bean id="moduleInventoryService" class="org.spring framework.transaction.interceptor. TransactionProxyFactoryBean"> <property name="target"ref="inventoryService"/> <property name="transactionManager ref"hibernateTransactionManager"/> <property name="transaction Attributes"> <props> <prop key="*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="save*"> PROPAGATION_REQUIRED </prop> <prop key="delete*"> PROPAGATION_REQUIRED</prop> </props> </property> </bean>
SessionFactory sessionFactory = new AnnotationConfiguration() SessionFactory sessionFactory = new AnnotationConfiguration().configure() .buildSessionFactory(); Cart cart = new Cart(); cart.setSatus ("active"); cart.setAmount(25000) Session session = sessionFactory.openSession(); Transaction tx = session.BeginTransaction(); session.save(cart); tx.commit(); session.close();
public class OrderCartDaoHibernate extends HibernateDaoSupport{ public void save(Cart cart) { getHibernateTemplate().saveOr Update(cart); }
Pembuatan skema basis data Dilakukan oleh Properti <prop key = "hibernate. hbm2ddl.auto"> create </prop>. pada saat sessionFactory dijalankan akan membuat semua tabel dan pada saat ditutup tabel yang dihasilkan tidak akan dihapus. Properti hiberntae.show_sql akan menampilkan SQL yang digunakan saat query menggunakan HQL
File properti basis data jdbc.username=root jdbc.password=admin jdbc.url=jdbc:mysql://localhost: 3306/erp jdbc.driver=com.mysql.jdbc.Driver hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect hibernate.show_sql=true hibernate.hbm2ddl.auto=create hibernate.format_sql=true
Penyatuan lapisan persistensi dan lapisan aplikasi JSF controller Memanggil Service Dimasukan pada file faces-config.xml.
evaluasi Menganalis hasil implementasi. ORM tidak bergantung pada DBMS. Properti koneksi berada pada satu tempat. Mendukung fitur lazy-loading. Mengamati data yang sering dan jarang digunakan.
Kesimpulan dan saran
kesimpulan Mismatch yang muncul pada pengembangan Retail ERP terdiri dari 4 aspek: Granularity, Identity, Asosiasi, dan Navigasi data. ORM terbukti menghilangkan mismatch antara konsep pemrograman berorientasi objek dan basis data relasional. Design pattern membuat kode program menjadi rapi dan terstruktur. Pemanfaatan design pattern pada teknik decalarative transaction dan Inversion of Control memudahkan proses akses dan manipulasi data.
saran Melakukan unit testing dengan Junit dan DBUnit. Penerapan ORM pada WebService. Penerapan ORM pada framework yang berbeda (TopLink, OpenJPA, iBatis) atau pada platfrom yang berbeda (.Net) kemudian dibandingkan hasilnya.
Daftar pustaka
Daftar pustaka Alur D, Crupi J, Malks D. 2003. Core J2EE™ Patterns: Best Practices and Design Strategies, 2nd Edition. United States: Addison-Wesley. Bauer C, King G. 2007. Java Persistence with Hibernate. United States : Manning. Ernita, H. 2008. Pengembangan Enterprise Resource Planning Untuk Perusahaan Ritel. [Skripsi]. Bogor: Departemen Ilmu Komputer, Institut Pertanian Bogor. Gamma E, Helm R, Johnson R, Vlissides J. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. United States: Addison-Wesley.
Parr A. N. 2000. A Taxonomi of ERP Implementation Approach Parr A. N. 2000. A Taxonomi of ERP Implementation Approach. School of Business System, Monash University. Peak P, Heudecker N. 2006. Hibernate Quickly. United States: Manning. Rashid MA, et.al. 2002. The Evolution of ERP System: A Historical Perspective. USA: IRM Press Walls C, Breidenbach R. 2005. Spring in Action. United States: Manning.