There are unit tests and then there are integration tests. Unit tests are isolated test of just the specific class (or limited set of classes) that you are working on, just a DAO class or just a service class, etc. Integration testing is when you put the classes in a more real-world test harness like cactus and other in-container testing.
For mocking in unit tests I use JMock (
http://jmock.org) which makes the creation of mock objects (with assertions and constraints ) trivial and you dont have to create a lot of extra mock object classes.
DAOs can often be an edge case that are difficult to unit test in a really meaningful manner, but you can still make sure that all the external pieces used are routing things properly.
Good luck and I hope this helps at least a little.