Reflexiones sobre la primavera: reflexiones sobre Ruby on Rails[2]
Después de observar la configuración de los dos fragmentos de código anteriores, no hay una sola línea de configuración y es muy diferente de usar ActiveRecord con Ruby on Rails. Es más problemático y no hay forma de hacerlo. retrasarlo temporalmente. La gestión de transacciones en la implementación de Spring incluye principalmente estos dos métodos.
El uso de Spring generalmente integra hibernate/ibatis como capa de acceso a datos, que también es el marco técnico de las palabras comúnmente utilizadas por la mayoría de los desarrolladores de Java. Por ejemplo, combinando Spring e Hibernate como capa de acceso a datos, no discutiré la existencia de genéricos por el momento. Solo daré un ejemplo simple de cómo colocar la gestión de transacciones debajo de la capa de acceso a datos y hablaré sobre mi gestión de transacciones de primavera ideal. .
La convención está por encima de la configuración. Primero, se estipula que el método que comienza con la lista de consultas show get find debe usar la definición de transacción de nivel de solo lectura PROPAGATION_REQUIRED, y el método que comienza con set save update remove delete debe usar la biblioteca de definición de transacciones de nivel PROPAGATION_REQUIRED. Esto puede satisfacer la mayoría de las necesidades de desarrollo, y luego solo necesita agregar metadatos delante de la clase que requiere configuración de administración de transacciones, como @ Transactionaop (hibernate) desarrollado por Spring para hibernate, que tiene algo como @transactionaop (Hibernate) @ Metadatos como la transacción AOP(ibatis)@ transacción AOP(JDO).
Como ejemplo, observe un fragmento de código donde UserDAO es una interfaz. Debería ver que simplemente agregar una línea de metadatos @ transacción AOP (hibernar) puede hacer que esta clase UserDAHibernate tenga funciones de administración de transacciones, porque su método de nomenclatura se ajusta a la convención de Spring (por supuesto, esto no es cierto, no existe tal función en primavera. Esta es solo mi opinión personal).
Contraseña
Paquete appfuse dao hibernate
Importar lista de utilidades de java; importar appfuse dao UserDAO importar appfuse modelo usuario; importar springframework orm hibernate support HibernateDaoSupportspan style=Color: Blue; > // Supongamos que existe una de las siguientes clases: Importar Spring Framework ORM hibernate admite transacciones de anotación AOP
< span style= color: blue;> @ transacción op(hibernate) clase pública UserDAOHibernate extended HibernateDaoSupport implementa UserDAO {
usuario público getUser(ID de usuario largo){ return(Usuario)esta plantilla gethibernate()get(Id. de usuario de clase de usuario);}
Lista pública obtener usuarios() { return esta plantilla gethibernate()find(del usuario);}
public void eliminar Usuario(Id. de usuario largo){ Objeto Usuario = esta plantilla gethibernate()cargar(Id. de usuario de clase de usuario) este getHibernateTemplate() eliminar (Usuario); );} public void save Usuario(Usuario Usuario){ this gethibernate template()saveourupdate(Usuario);} }
La definición de transacción de Spring es muy flexible y amplia. Define 7 comportamientos de propagación y hay 5 tipos. de constantes de aislamiento, pero se usan con más frecuencia, a saber, PROPAGATION_REQUIRED y PROPAGATION_REQUIRED readOnly, por lo que propuse que la hipótesis anterior se puede expandir simplemente.
La simplicidad es hermosa
Lishi Xinzhi/Article/program/Java/ky/201311/29082