Unfortunately, I think that article does more harm, and introduces more confusion to newbies, because it looks like the 4 listed are seperate products and do not overlap. That is a problem, because both Toplink and Hibernate implement the JPA spec. Many people think that if they choose JPA, they can't use Toplink or Hibernate, which is incorrect.
So I saw this under the Hibernate sections "You need container-provided services, such as those provided by EJB, in which case your choices are pretty much limited to EJB."
Well, if you are using Hibernate's version that also implements the JPA spec, and run it inside a App Server, you get all the container-provided services. Even before, when you ran beginTransaction in Hibernate's sesssion api, Hibernate was smart enough to see if JTA was there and join the JTA Transaction of the EJB Container.
So, I would be more concerned with the misconceptions that that article presnets, and would much rather people know that there is a lot of flexibility in what you can choose to use.