If it's a singleton, you have to worry about concurrency. Once concurrency is taken care of, you can load-test your application with singleton dao's and prototype dao's, and compare the results to know which is the right option for you. I highly doubt that a singleton will be the better approach. It will be difficult to take care of all aspects of concurrency where it would be no challenge with prototypes, and a singleton blocking at long-running queries will cause your users severe hair loss.
Oracle Certified Professional: Java SE 6 Programmer
Oracle Certified Expert: Java EE 6 Web Component Developer
Oracle Certified Expert: Java EE 6 Enterprise JavaBeans Developer
Processing more than one request at a time would obviously cause trouble if you could only have one instance of a DAO class. All other requests would just have to wait - completely contrary to the idea of DAO objects.
The whole idea of DAO objects is to provide an instance which is independent of all others to conveniently hold a particular set of data.