Brucey did persistence.mod which stores the data in an XML file. Which is, I think, a lot easier to do then using a SQLite database... At least in the case of serialization.
That very much depends on what you are trying to achieve. And ORM (Object Relational Mapper) like
http://www.sqlobject.org/ (for python) as an example abstracts away lots of normal SQL-CRUD (Create Read Update Delete) while at the same time still having the benefit of fast searches from the database.
If you have 10 million records/objects and you need to look up and alter 100 of them for some processing an XML file serialization is clearly a worse solution than ORM functionality.
ORMs often allow you to either define classes and it will create an table-structure in the database matching these classes or even vice versa.
ORMs are also often quite smart in that if a class has an internal list of other objects (i.e. in database terms - a relation), the ORM often attempts to lazy-read the "sub-objects", i.e. they are looked up and accessed first if/when the program interacts with the SUB-list. This functionality uses so called "proxies" in several languages that supports them. A proxy is a function that is called instead of any function call of a class, to provide extended functionality. The proxy can then, in turn, evaluate the call and call internal functions in the class to get the actual job done.
Sorry for long text. TL;DR version:
Serialization <> ORM (different uses)