Thanks Alberto.

I use the default sequence of struts interceptor and in the case B, I
initialize the POJO java bean by implementing the method "prepare", which
uses a service layer method to retrieve the data from D.B.

I am not sure about your suggestion, "Make sure 
that you are not using either as the persistent object WILL record 
changes to the database when dirty (by virtue of the OSIV)".

As Alvin pointed, I thought the OSIV is ready-only by default. How can it
tell whether the object is persistent or transient in this case? 


cheers
Jack



Alberto Flores-2 wrote:
> 
> All the Preparable Interface does (along with the prepare interceptor) 
> is to use reflection to call the prepare method) at some point in time 
> (depending on which order you configured it).
> 
> It you don't have any code in the prepare method, then, nothing should 
> occur with your transaction.  It seems to me that you are confusing 
> transient objects with persistent objects during your test. Make sure 
> that you are not using either as the persistent object WILL record 
> changes to the database when dirty (by virtue of the OSIV).
> 
> 
> 
> Jack_Ryde wrote:
>> Keyword: struts2 preparable, spring OpenSessionInViewFilter, hibernate
>> transaction management.
>> 
>> Background: 
>> 
>> We use OpenSessionInViewFilter in our web xml to enable lazy loading in
>> web
>> views.
>> 
>> The struts action class provides a basic function in adding, updating and
>> deleting data entity as a controller.
>> 
>> Our form fields reference the entity object and its properties with a
>> valid
>> OGNL expression...
>>  like <s:textfield name="organisation.phoneNumber"></s:textfield>
>> 
>> The submitform's action does nothing to D.B.
>> 
>> Problem: 
>> 
>> Case A: 
>>  
>> The struts action does not implement Preparable interface and we use some
>> private method to initialize the data used .
>> 
>> The jsp uses the entity expression directly. <s:textfield
>> name="organisation.phoneNumber"></s:textfield>
>> 
>> As a result, whenever you make any change in the jsp for this entity and
>> submit the form, it does not go to the D.B.
>> 
>> Which is good because this is exactly what we want as “Open Session in
>> View”, which is read-only. 
>> 
>>  
>> 
>> Case B: 
>>  
>> The struts action does implement Preparable interface and in the
>> implementation, we retrieve the data from database and populate its
>> original
>> value.
>> 
>> And the jsp uses the entity expression directly. <s:textfield
>> name="organisation.phoneNumber"></s:textfield>
>> 
>> As a result, whenever you make any change in the jsp for this entity and
>> submit the form, it changes the D.B.
>> 
>> My question is the case B:
>> 
>> How does  "Preparable" influence hibernate transaction management? Anyone
>> has any idea? 
>> 
>> 
>> I guess it is related to the struts 2 Interceptor, which does have some
>> influence to the spring, which then influences the hibernate transaction
>> control.
>> 
>> I post the problem in struts forum, not spring or hibernate forum, 
>> because
>> if I do not use "Preparable", everything works as expected. 
>> 
>> 
>> cheers
>> Jack
>> 
>> 
>> 
> 
> -- 
> --
> Alberto
> http://www.linkedin.com/in/aflores
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 

-- 
View this message in context: 
http://www.nabble.com/%22Preparable%22-influence-hibernate-transaction-management-when-using-%22OpenSessionInViewFilter%22-tp19660675p19716761.html
Sent from the Struts - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to