Monday, December 19, 2005

Struts and Hibernate in a Content Management System

I've recently decided that I would like to try my hand at building a Struts - driven Content Management System. I've almost completed the construction of a CMS written in PHP, and I'm dissatisfied with it. It took a long time to build, and it turns out to be less flexible than I had hoped.

So, now that I have some experience under my hat, and a bit of a better idea for what would work for a flexible and powerful content management system, I'm about to start over.

I've been wanting to dig into a Java based server environment for man, probably 5 years. I can't believe it's taken me this long. But it's time.

The goal is to build a CMS that's relatively simple in it's data model. I have a design drawn up with currently 9 tables. The records table contains the body of content. A collections table contains records which group the records. Both of those tables have related properties tables which allow any number of properties to be added to the records and collections. Another table allows tagging a set of categories for a record, and a sorting table helps to organize the collections of records.

To get started, I figured that I'd need, and want, to deploy a number of different technologies, API's, IDE's and related services. Among which are:

MySQL 5
Java 5
Eclipse 3.1
ANT
JDBC
Hibernate 3.1
Struts
Tomcat
Apache
mod_jk
jsvc (when I decide to do this all over again in a Unix environment)
and a templating engine to be decided.
I'd also like to use Lucene for searching

There will be more too, but this is a start.

I'm hoping that I can accomplish the following with this project.

  1. Create a solid, enterprise level, content management system
  2. Learn Struts
  3. Learn Hibernate
  4. Learn Eclipse
  5. To a lesser extent, become familiar with ANT
  6. Become more familiar with Transactions, triggers, and stored procedures.

So it's certainly a pedagogical practice, but I think it's going to be worth the effort. In the long run, I hope to turn it into something that can be sold to clients and repurposed efficiently. However, I have to admit, it's mostly just an educational endeavor. But I'm excited about it. I plan on keeping notes here as I begin to understand things.

No comments: