in reply to O-O design, aggregation of objects
Don't reinvent wheels. There are a pile of wrapper modules for handling database management from Perl. Probably the closest to the level you want is Class::DBIx.
That of course doesn't answer the bigger question. I'd suggest that User->new () doesn't create a user without being told to, but you can pass a bunch of parameters to it among which may be -create => 1, -user => 'Wibble' and so on.
Rather than providing a bunch of getter/setter members you could provide a single setter and getter that takes a parameter specifying the property to set/get. Tk uses this technique for getting and setting options using configure and cget.
Perl reduces RSI
- it saves typing