• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

preload select boxes with content

 
Dave Bosky
Ranch Hand
Posts: 72
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I have a JSP page that contains 3 select boxes that I need populated with dynamic content. What's the best method for preloading form select boxes with name/values? The information doesn't change very often so I was wondering if I could load each collection into a application/global scope and loop over the collection as needed in my jsp's without hitting the database/server.

~Thanks,
Dave
 
Bear Bibeault
Author and ninkuma
Marshal
Pie
Posts: 64613
86
IntelliJ IDE Java jQuery Mac Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Absolutely. Why hit the DB each time if the data will not change? If your app needs to be sensitive to the occasional DB change, the cached data needs to be able to detect that and reload accordingly, but that's a frequently used and understood pattern if you need to employ it.
 
Thejaswi Narayana
Greenhorn
Posts: 27
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The application I am working on requiries loading of selection box with data from the database. We are currently loading the data by making a database call to the database for each request. This is making the page loading very slow.Your suggestion of getting the data once from database and storing in the application scope will make the application fast. But if there is any change in the database data how to detect the change and reload the data. Please provide the link to the pattern which you mentioned.
 
Rajiv Babu
Greenhorn
Posts: 12
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,

Can you give us some more details as to how you are caching? How is the cache served across concurrent access. Assuming that you are using a servlet which will take care of all requests from the JSP, you can cache the data at the application level, by putting in the information as <attribute,value> in the servlet session context. You can retrieve any data by accessing the attribute in the sessionctx. Once an change happens in the data, the code should automatically modify the corresponding attribute in the servlet. You can remove it using the removeAttribute() call in javax.servlet.ServletContext. You can recreate the value using putAttribute(). That way the data in the cache is refreshed. Your JSP can then be rendered with the new data.

regards,
Rajiv
 
Thejaswi Narayana
Greenhorn
Posts: 27
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
What I wanted to know is how do I detect a change in the data in the database table. Whether the data is stored in the appication scope or session scope, it has to be updated as and when the data is updated or new row is added to the database table. Is it done by periodically doing a query on the database and updating the values stored or is there any standard pattern which is used for this.

Regards
Thejaswi Narayana
 
Sonny Gill
Ranch Hand
Posts: 1211
IntelliJ IDE Mac
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
One easy way of doing it would be to have a single object that is responsible for updating the database for that table, and for caching the retrieved values. This object will refresh the cache as well, whenever it is asked to do an update.
All other objects must do the database access for that table through this 'manager' object.
You must make sure that there is only one instance of this 'manager' object in the application.
 
Thejaswi Narayana
Greenhorn
Posts: 27
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The approach of using a manager object such as a DAO works fine if the database update is through the same application. But in my application, the database updates are through a different application and my application just allows to do a query on those tables using some search criteria.
 
Sonny Gill
Ranch Hand
Posts: 1211
IntelliJ IDE Mac
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Yup, and provided no body updates the database directly by using a SQL client.

I wonder if any databases support triggers that can call a remote method or a web service whenever data is modified.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic