la opcion que he usado para mi proyecto fin de carrera y que veo que es la que suele usarse consiste en una clase que se ejecute en el servidor a la cual se conecte tu applet (mediante sockets, por ejemplo) y que se comunique con la bd.
basicamente, el applet manda algo por sockets a una clase servidora (tendras que decidir qué es lo que manda y como), la clase servidora actua sobre la base de datos (al estar tanto la BD como la clase en el servidor no hay problemas de seguridad y ademas ahora los drivers son responsabilidad unica y exclusiva del servidor), y devuelve por el mismo socket la informacion a tu applet.
en esquema:
applet --(socket)--> claseServidora --(jdbc)--> MySQL --(jdbc)--> claseServidora --(socket)--> applet
sobre decidir que y como mandar por el socket, has de plantearte si hay informacion sensible y si hay consultas "libres" por parte del applet.
es decir: cuidadito con que en la bd haya datos importantes y la claseServidora acepte consultas sql directamente del applet. Si esto fuera asi, alguien podria conectar con la clase servidora y mandarle cualquier tipo de consulta sql que decidiera (consulta, borrado, modificacion)
normalmente, lo maximo que deberia poder hacerse seria definir una serie de consultas en claseServidora y que el applet pudiera elegir una de ellas sin modificar datos (o modificandolos, pero con una posterior supervision antes de realizar la consulta para evitar sql injection o smilar)
en cualquier caso, como creo que me estoy yendo por las ramas y esto se sale de lo que preguntas, dejemoslo en lo del socket