Either can mean “[something] hates him” or “He hates [something]” depending on the context. “〜は” vs “〜が” in Japanese has nothing to do with subject versus object and in fact “〜が” has surprisingly little to do with subjects either. Japanese particles are actually very overloaded but that's the case in English too. Consider “I am seen by him/the river/way of eyes.” where “by” is very overloaded and in theory “I am seen by the river.” could mean that the diver did seeing, rather than being the location the seeing happened, but that's unlikely. Rivers do not generally see.
The problematic, but very common, part of “嫌いだ” is that it marks both it's subject and object with “〜が”, though “〜を” for the object also occurs in some more limited contexts. The problematic part of “〜が” is that when “followed” by “〜は" it mandatorily “contracts” to simply “〜は" opposed to say “〜に” which becomes “〜には”. The problematic part of Japanese is that parts of speech readily clear from context tend to be omitted.
So “私が猫が嫌いだ” could mean “I hate cats.” or “Cats hate me.”. In practice, it almost always means the former. “私は猫が嫌いだ” is a bit more likely to mean something along the lines of “Cats are the things that hate me.” because topic-fronting is fairly common in Japanese but it also more often means “I hate cats.”
As for which is the better choice, that simply depends on whether the context wants to make “him” the topic or not. If you're already talking about this person in or contrasting him in some way with something else then “〜は” is more appropriate. If you're answering “誰が嫌い？” or bringing him up out of nowhere then “〜が” is the way to go. But what part of the sentence, if any, to make the topic in Japanese is a very difficult thing that comes with time and exposure that's hard to explain and it's not just the subject that can become the topic. For instance “彼が嫌いかどうかは本当にわからない” means “I really don't know whether I hate him or not” [or “I really don't know whether he hates it or not”] note that “〜は” here comes after “彼が嫌いかどうか” “whether I hate him or not”. Putting “〜は” there is natural in a context where both speaker and listener are assumed to ponder the issue. The speaker isn't introducing the topic into the conversation at that point but commenting on it and that's fundamentally what “〜は” does, it marks that something is already “in the conversation” in some way rather than being introduced into it, but it need not have been explicitly mentioned before either.