Rotating an object according to geometry
Kinda depends on what you mean.  A model is composed of a lot of geometry.  Is there a specific face you want facing front?
If so, try this:
Select a face.  Ctrl-alt-space to create a custom orientation on the basis of that face.
Object mode, snap cursor to selection.  Create an empty.  Duplicate that empty.  Move that duplicate 1 unit in the custom Z.  Give the original empty a locked track (lock Z, probably) targeting the duplicate.  Parent your mesh to your original empty (keep transform).  Delete or mute the empty's constraint.  Unparent the mesh (keep transform.)

That's assuming you're already oriented properly up/down (Z axis).  If you're not, you can use similar techniques, combining a damped track and a locked track.