So, I have a challenge ahead of me: to develop a web application with full CRUD functionality
Sounds pretty standard.
and be able to deal with large set of data…in the 4000+.
4 thousand records really isn’t that many. Wait until you get to millions As far as interfaces that display, edit, and add records, large recordsets have little bearing on how you write your app other than your list screens. You’ll probably want to paginate the results onto multiple screens with search and filtering capabilities. This has more to do with your database layer than anything else though.
I still don’t have a good grasp on what would be the best method to use in creating the Model.
There is no “best” way, just a lot of opinions Experiment and find what works best for you.
Many terms (ORM, Webservices…etc…) are being tossed around that I have yet to fully understand how they are implemented.
If you have a Java background, CF ORM is implemented under the hood with Hibernate. CF makes ORM pretty easy. No XML-- just define CFC’s and let CF map them for you to the database tables.
Here’s a preso i did on intro to CF ORM: http://vimeo.com/80159109
Here’s a CF ORM tutorial: http://www.learncfinaweek.com/week1/Intro_to_ORM/
And here’s a preso on how ColdBox-specific tools for dealing with ORM: http://www.coldbox.org/media/cbdw2013#5_1
You don’t have to use ORM though. Many people find it quite helpful, but it may be more confusing for a beginner since it places another layer of abstraction into your application since you won’t work directly with the database.
Web services are simply web-based end points you host on your web servers to expose functionality to a remote system. If your CRUD interface will be used soley via your HTML GUI, this is currently no concern .
I am familiar with Java Data Binding which helps when dealing with many properties in a Bean.
Never heard of that, but after a quick Google it sounds like it’s aimed more at desktop Java apps and not web uses. Correct me if I’m wrong.
Could someone please in a direction of best practices when dealing with large data set?
Paginate your results and put search/filtering controls on the interface. Also, make sure you’re working with a DBA to help monitor DB performance. Probably not that big of a deal with only 4,000 records though.
And also, can this problem be efficiently solved with ColdBox?
Any web-based problem can be solved with ColdBox
I’d start with a list of wireframes or mockups from your designer regarding what screens you need to build. Then start thinking
about what kind of data operations you need to support for your users. This is your basic service layer.
bean:
widget.init()
widget.setProperty()
widget.getProperty()
Service:
widgetService.newWidget();
widgetService.saveWidget();
widgetService.getWidget();
widgetService.listWidgets();
Now, think about the actual screens/UI you’ll be building. Write up a list of handlers and actions you need to create within ColdBox MVC along with their related views.
/handlers/widget.cfc
-index
-add
-edit
-save
/views/widget/index.cfm
/views/widget/add.cfm
/views/widget/edit.cfm
It may help you to mock up screens first, creating your handlers and views-- but I like to build the services and beans (models) first as it forces me to not be tempted to mix business logic into my handlers.
~Brad