2011-12-08 22 views
5

Me he preguntado, se Java EE 7's interfaces principales se extiende AutoCloseable o no. (Por interfaces principales me refiero principalmente EntityManager y los gustos, sin embargo, no sé a ciencia cierta si hay otras interfaces o clases que podrían ser cerradas automáticamente.)¿Las interfaces principales de Java EE 7 (EntityManager, ...) amplían AutoClosable?

Creo que debe y aquí está la base de mi suposición.

Java 6's Connection ni siquiera se extiende Closeable, sin embargo Java 7's Connection extiende AutoCloseable (al igual que varias otras interfaces en el paquete java.sql).

Pueden interfaces como EntityManager extender AutoCloseable de manera que serviría nos bien, dado Java 7's try-with-resources statement? ¿O cerrar un EntityManager auto-mágicamente es demasiado complicado?

¿Se considera esta característica particular como parte de JSR-342?

+1

Creo que es una buena pregunta para hacer en la lista de correo de la especificación JPA aquí: http://java.net/projects/jpa-spec/lists –

+0

Apareció en la lista de Servlets una vez. El problema es que JPA, JSF, etc., quieren ser compatibles con versiones anteriores fuera de Java EE. –

+2

Si utiliza la versión de JPA administrada por contenedor, las transacciones de hecho se iniciarán y cerrarán como sus palabras "auto-mágicamente", y usted no tiene que preocuparse por eso. Si su pregunta está relacionada con la versión administrada de la aplicación de JPA, debe editar la pregunta. – jmoreira

Respuesta

3

Si está administrando sus propios objetos JPA, try-with-resources es una buena cosa con respecto a EntityManagers y, en menor medida, a EntityManagerFactory.

Opté por crear una utilidad que envuelve un EntityManagerFactory en un java.lang.reflect.Proxy que implementa una versión AutoCloseable de la interfaz. El controlador de invocación luego intercepta llamadas a createEntityManager() para que pueda devolver versiones proxy de las instancias subyacentes de EntityManager que también implementan AutoCloseable.

Creo que es mucho más fácil trabajar en el mundo de los objetos JPA administrados por contenedor pero si estás atrapado corriendo en una aplicación web sencilla, entonces esto puede funcionar para ti.

+0

massfords olvidó mencionar que escribió un excelente artículo donde muestra cómo crear realmente dicho proxy, lo puede encontrar aquí: http://massfords.com/Proxy-for-AutoCloseable/. Gracias Mark! – wpodgorski