Hello Yucca:
It is true what you said about concurrent access, but it is not the only way you can lock on your DB, you can also use the new
Thread capabilities that comes with JSE5 as the java.util.concurrent.lock.* package, where you can find how easy is to create Thread safety.
The only pattern that I know you must implement is MVC I am not aware of a must about using other patterns, of course you can use them but as I said only when they are really needed or when they make your code easy to read (code easy to read leads to code easy to maintain, that's why you use MVC).
Therefore you are free to use as many patterns as you wish but do not try to fit them just because you want to use them, if they lead to code not easy to maintain.
If you think that your singleton class will help you on achieving this task go ahead and implement it. By the way as far as I know you do not have to throw an exception in the clone method if you do not implement it, this method is only for cloneable objects (Objects that implements cloneable) and this is based in another design pattern called Prototype.
The best way of creating your singleton would be to create a private constructor and to create your singleton instance at class loading time having a method to retrieve this instance.
As far as I know that is the best way of creating a singleton but of course there might be better one's.
Hope this helps!