GWT + Hibernate + saving bandiwidth -
i writing gwt app using hibernate save on server.
i have similar concept customer -> orders. if create class customer , class orders, in database, order table has foreign key customer table.
say wanted retrieve orders server, , not care customer. if write bring down orders, automatically bring down customer if use eager loading. if not want that, can leave lazy loading , orders, , assume myorder.getcustomer() == null.
now if wanted create order on client, there way set customerid on order , pass save without having pass customer object it. i.e.
order myorder = new order(); . . . myorder.setcustomerid("1234"); rpcsave(myorder);
or option have
customer me = new customer() order myorder = new order() . . . myorder.setcustomer(me); rpcsave(myorder);
thanks,
nadin
one options use transient field in customer linked order:
public class order { @transient private string customerid; ... // setter/getter methods }
here how value used on client:
order myorder = new order(); ... myorder.setcustomid("1234"); rpcsave(myorder);
here how value used on server:
if (order.getcustomerid() != null) { customer customer = // lookup customer primary key order.setcustomer(customer); }
this logic allows client create link between order , customer without requiring custom object itself. server code, on other hand, tasked looking customer instance , adding actual order.
the problem approach adds attributes , methods order object not serve purpose , make code harder follow.
an alternative approach change rpcsave operation take in order , customerid. server lookup customer based on id , make association itself. thereby saving overhead of data transmission, while keeping order object simple:
// client order myorder = new order(); ... rpcsave("1234", myorder); // server customer customer = // find customer customerid; neworder.setcustomer(customer); ...
hope helps.
Comments
Post a Comment