sequences as implemented by oracle require a call to the database before the insert.
identities as implemented by sqlserver require a call to the database after the insert.
one is no more hackish than the other. the net effect is the same - a reliance/dependency on the data store to provide unique artificial key values and (in most cases) two calls to the store.
i'm assuming that your relational model is based on artificial keys, and in this context, i'll offer the following observation:
we should never seek to imbue artificial keys with meaning; their only purpose should be to link related records.
what is your need related to ordering data? can it be handled in the view (presentation) or is it a true attribute of your data which must be persisted?