Don't pollute the Alfresco database with unrelated tables. Instead, create your own database instance and put your tables there. If you ignore this advice you could be sorry when you do your first upgrade.
Also, familiarize yourself with the existing Alfresco services. There already is a PreferenceService in the Repository-tier which can be used to store user preferences. The REST v1 API also exposes this.
Do NOT use Hibernate at all (even if ignoring Jeff's advice of not creating custom tables) - Hibernate has been removed in Alfresco 6, so you would set yourself up for failure in the future if you developed something using Hibernate.
If you really must, you should use MyBatis / iBatis for any custom SQL interaction, since this is what Alfresco uses and will continue to use since there has been no announcement / indication they are refacatoring anything in their DAO layer. (Again, think long and hard if this is the right thing to do.)
You can see an example of MyBatis / iBatis use in one of my addons where I have used it to implement an incremental cleanup mechanism for data in the alf_prop_* tables as an alternative to the default, all-or-nothing cleanup job provided by Alfresco (which was based on a script of mine). Start with the dao-context.xml and then check the SQL mapping files for specific queries.
Note that this example works with the existing Alfresco database connection, but can easily be adapted to work with another database by providing a different data source and transaction manager. The basis for these can be taken from the original Alfresco config.