I don't know what to do! Help please would be much appreciated

So I have been having problems with my boy for a while now we hardly talk unless he wants me to go to his he also says shit about my mum and she's in hospital as I type he calls me names goes through my bag and grabs anything and everything out.

But yesterday he threw a hard as basketball ball at me 3 times it really hurt he did it on purpose in front of everyone he even say sorry didn't even ask if I was okay until like 10 hours later?

I kinda wanna break but I don't know what to do we've been together for 3 years nearly😢