File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Servlets and the fly likes DB query from bean Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Servlets
Bookmark "DB query from bean" Watch "DB query from bean" New topic
Author

DB query from bean

John Schretz
Ranch Hand

Joined: Sep 10, 2008
Posts: 188
Is it ok and thread safe to call a static DAO method from a bean class?

I.E. Create a new cart object to be used in a servlet
then in that instance of cart make calls to the DB as ahown below.

Would this give me any problems?



Within cart class
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 42263
    
  64
No, that's not thread-safe, since servlets are multi-threaded. Unless you make provisions for it (e.g., synchronizing that code section in the servlet, or making DiscountDB.GetNewUserDiscount() thread-safe) the code can run into trouble.


Ping & DNS - my free Android networking tools app
John Schretz
Ranch Hand

Joined: Sep 10, 2008
Posts: 188
Ulf Dittmer wrote:No, that's not thread-safe, since servlets are multi-threaded. Unless you make provisions for it (e.g., synchronizing that code section in the servlet, or making DiscountDB.GetNewUserDiscount() thread-safe) the code can run into trouble.


ok but i should be fine with executing DiscountDB.GetNewUserDiscount() right from the servlet then, correct?
Bauke Scholtz
Ranch Hand

Joined: Oct 08, 2006
Posts: 2458
Servlets are at its own multithreaded. It is a very bad idea to synchronize servlet requests.

So either remove that 'static' modifier of the DAO method --this makes indeed no sense--, or make sure that your DAO method is written threadsafe (no access to static variables and having only method variables).
John Schretz
Ranch Hand

Joined: Sep 10, 2008
Posts: 188
Bauke Scholtz wrote:Servlets are at its own multithreaded. It is a very bad idea to synchronize servlet requests.

So either remove that 'static' modifier of the DAO method --this makes indeed no sense--, or make sure that your DAO method is written threadsafe (no access to static variables and having only method variables).


I have moved DiscountNewUser newUserDiscI = DiscountDB.GetNewUserDiscount(); into the servlet. All variables are are method variables. So im good now. thanks
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 42263
    
  64
I have moved DiscountNewUser newUserDiscI = DiscountDB.GetNewUserDiscount(); into the servlet. All variables are are method variables. So im good now.

... only if DiscountDB.GetNewUserDiscount is thread-safe. Otherwise there'll be trouble.
Bauke Scholtz
Ranch Hand

Joined: Oct 08, 2006
Posts: 2458
When he said " All variables are are method variables.", I think (and hope) that he actually meant the DB method.
John Schretz
Ranch Hand

Joined: Sep 10, 2008
Posts: 188
Bauke Scholtz wrote:When he said " All variables are are method variables.", I think (and hope) that he actually meant the DB method.


Yes
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: DB query from bean