If cost is not constraint then Clustering is the best option for high availability, you have two options in clustering Active\Active and Active\Passive.
Active\Active: In any point in time both nodes are active meaning SQL services are running on both nodes. If any one nodes fails then all the services will failover to other node, so you have two instances running on same node now, downtime is in seconds may be 5 secs. Now you have time to fixed other node, and failback\move services back to original node.
Active\Passive: In any point in time only one node is active that is SQL services are running on only one node other node acts as stand by or passive. If active node fails all services will failover to passive node, which is active node now.
Remember clustering is good only for OS level, If disk fail you can't do anything, however you can manage disk failures at SAN level.
As Gail and Bru mentioned Replication is good for object level, you can do it in database level, but it's pain in the butt. Database mirroring and Log shipping can be considered as high availability solution only if you have cost constraint, all depends criticality of the business.
For clustering we don't need DBA intervention at all in most cases if node fails, thats not same with database Mirroring and Log Shipping.