23
This is what I did recently
In my hibernate mapped POJO- I kept the type of the member as String and it is VARCHAR in the database.
The setter for this takes an enum There is another setter which takes String- but this is private (or you can map the field directly- if that's what you prefer.)
Now the fact I am using String is encapsulated from all. For the rest of the application- my domain objects use enum. And as far as the database is concerned- I am using String.
If I missed your question- I apologize.