Assalamu'alaikum teman-teman..
Beberapa waktu yang lalu ada seseorang yang mengirim email kepada saya, dan 
meminta bantuan dalam replication pada db4o. Setelah saya baca kasusnya, dan 
saya perbaiki, lalu saya kirimkan kembali kepada si penanya, ternyata dia kirim 
email balik lagi dan menanyakan tentang bi directional replication pada db4o. 
Jadi tidak hanya me-replicate data dari db4o ke SQL, tapi ini dari SQL ke db4o 
juga. Selama ini Replication DB4o memakai hibernate xml, setahu saya. Memang 
agak lambat, perkembangan db4o. JEE sudah sampai versi 6, Hibernate sudah 
beberapa tahun lalu memakai JPA, db4o masih memakai Hibernate xml. Mungkin ada 
yang bisa bantu? Jadi setahu saya, bi-directional Replication db4o itu adalah 
untuk db4o ke db4o. Bukan db4o ke Hibernate. Di Manualnya saya baca jadi 
contohnya itu misalkan ada mobile app yang memakai db4o, dan ada desktop app 
yang memakai db4o. Kedua aplikasi tersebut akan diintegrasikan sehingga jika 
ada data masuk dari sisi mobile app, desktop app juga akan menerima data 
tersebut. Sebaliknya, jika ada data masuk pada desktop application, maka di 
mobile application juga akan menerima data tersebut. Setelah saya utak atik ide 
bi-directional replication dari db4o ke Hibernate, maka kodenya menjadi seperti 
ini:
package tohasoft.main;

import com.db4o.Db4o;
import com.db4o.ObjectContainer;
import com.db4o.ObjectSet;
import com.db4o.drs.ReplicationSession;
import com.db4o.drs.hibernate.HibernateReplication;
import com.db4o.drs.hibernate.ReplicationConfigurator;
import com.db4o.ext.ExtDb4o;
import java.io.File;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import tohasoft.model.Address;
import tohasoft.model.Customer;

public class BidirectionalRepplication {
    public static void main(String[] args) {
        new File("OneToOneExample.db4o").delete();
        System.out.println("Running OneToOneExample example.");
        ExtDb4o.configure().generateUUIDs(Integer.MAX_VALUE);
        ExtDb4o.configure().generateVersionNumbers(Integer.MAX_VALUE);
        ObjectContainer objectContainer = Db4o.openFile("OneToOneExample.db4o");
        Address address=new Address();
        address.setCity("Solo");
        address.setCountry("Indonesia");
        address.setStreet1("Rebab");
        address.setStreet2("Rebana");
        address.setZip("57157");
        Customer customer=new Customer();
        customer.setAddress(address);
        objectContainer.set(customer);
        objectContainer.commit();
        Configuration config = new 
Configuration().configure("hibernate.cfg.xml");
        SessionFactory sessionFactory = config.buildSessionFactory();
        Session session = sessionFactory.openSession();
        Transaction tx = session.beginTransaction();
        Address addressHibernate = new Address(null, "Menjangan", "Singa", 
"Jogja", "27155", "ind");
        Customer customerHibernate=
                new Customer(null, "Title", "XXX", "XXX" +
                "", addressHibernate, "a...@a.com", "0202020", "020202019019", 
1, "909090");
        session.save(customerHibernate);
        session.getTransaction().commit();
        ReplicationSession replication = 
HibernateReplication.begin(objectContainer, config);
        ObjectSet changed = 
replication.providerA().objectsChangedSinceLastReplication();
        while (changed.hasNext())
            replication.replicate(changed.next());
        //Di sinilah kode yang tidak berjalan.. Repplication dari hibernate ke 
db4o tidak mau berjalan
        changed = replication.providerB().objectsChangedSinceLastReplication();
        while (changed.hasNext())
                replication.replicate(changed.next());
        replication.commit();
        replication.close();
        objectContainer.close();
    }
}
Data dari Replication db4o entity "customer" sudah bisa masuk di db4o dan di 
SQL.
Akan tetapi, data dari SQL Entity "customerHibernate" hanya masuk di sisihtt 
SQL saja, ternyata. Di db4o, tidak masuk.Mungkin ada yang bisa bantu?


Kirim email ke