Tushar, you are mentioning org.hibernate.annotations.Immutable, which is not the same annotation as what Sangel means.
There was once a proposal,
JSR 305, to add some extra annotations to
Java's standard library. Some of these were eventually added to the package javax.annotation, but there's no Immutable annotation in Java 8.
The purpose of the annotations of JSR 305 is to help tools understand what you mean. So, you could for example put an @Immutable annotation on a class that should be immutable, and a tool could then check if the class was indeed immutable. This is similar to how the @Override annotation works - you put it on a method that according to
you should override a superclass method, and the compiler gives you an error if it doesn't.
The purpose is to help the compiler or other tools to check if your code is correct. It will not automatically make your class immutable!