I’m planning to build Management Information System in Java for my final year project. I would like to use Spring and Hibernate, however I haven’t used any of these frameworks yet. Hence my question is, will I have enough time to learn it (I don’t mean to be an expert, just to be able to use them in my project) and still complete my project on time, or I should pass on it and learn Spring and Hibernate when I get my first job in the future? Also, do I have a better chance to find a job as a graduate who knows these frameworks ( I live in UK) ? Your help is much appreciated.
You may find that learning a framework like Spring or Hibernate comes with challenges. In my opinion attempting to use these frameworks for your school project will put you at a disadvantage seeing that you do not have experience with them. A school project will usually not give credit for learning a framework so you will be doing the extra work of learning the framework without any credit.
Of course, after learning the frameworks, you then have the advantage when looking for jobs. However, for the school project you may need to focus on the aspect of the development that your lecturer is going to pay attention to. That is, you may find that the analysis and design that you perform gains more credit than actual running code (this all depends on the degree you are doing of course). In other cases, the running application is more important and so on. Then ask yourself if using the frameworks will add to that aspect of the project that your lecturer cares about.
So to summarize, learning the frameworks is a good idea but may not be a good idea during a school project.
I attempted to learn Spring MVC and Hybernate for an independent study project my final semester of college. The summary is doing everything from scratch takes way to long so find something to help speed up the process. In my case I used SpringRoo to help generate the scaffolding. I was able to view the generated code to get an idea of how Spring and Hybernate worked while avoiding the need to write XML configuration files and data mappings by hand. A school project won't make you a master of Spring and Hybernate but at least it'll be something you can say you have experience with on a resume. Another option could be to use Grails It is a web framework that uses the Groovy language to allow rapid web application development. It uses Spring and Hybernate under the covers but most of the complexity is hidden from you.
Learning those technologies would definitely give you an advantage later. Do not think you will have any more time to learn them later.
Unfortunately school projects honor hacked crapware over quality code, but now it is your choice to pick your side.
On the other side they are not that difficult to master if you understand already what a ORM/CRUD/MVC/etc. is aiming for. You will make your project much more meaningful by focusing on features and not reinventing the wheel, and you would also learn new technologies. How much time do you have? If it is for the end of the upcoming semester, you have more than enough time.
Spring and Hibernate will help you get a job. Just typing in Spring as a keyword at Monster Jobs in the keyword will give you a few ideas.
You can find a number of tutorials out on the web. They're good for getting you going, but they don't necessarily help you understand the benefits of the frameworks. As an analogy, if you learn basic, you'll be familiar with
print "Hello world"
And then when you learn a "better" language, you'll have to use
System.out.println("Hello World");
And you might think "How is this better? I just need to type twice as much. But then when you eventually understand the benefits of objects etc, you have an "Aha!" moment.
To help get the "Aha" for Spring, I recommend learning about Dependency Injection (also known as Inversion of Control). Martin Fowler's piece is a classic, but for beginners this article might help.
For hibernate, I think it helps to understand the differences between Object model and the Relational model. This will help you understand why Hibernate does things certain ways. The wikipedia page may help, but I found a Hibernate book such as Bauer's to be very useful.