2011-06-08 65 views
0

我正想通过Hibernate的教程,并注意到,在每道你必须得到会议,开始transaction.Perform所有操作,然后提交相同的代码包装为不同的DAO方法

private void createAndStoreEvent(String title, Date theDate) { 
     Session session = HibernateUtil.getSessionFactory().getCurrentSession(); 
     session.beginTransaction(); 

     //Perform operations... 

     session.getTransaction().commit(); 
    } 

然后,我已经注意到一个名为AppFuse的框架,使用Hibernate具有如图below.I不看的BeginTransaction,并承诺DAO方法

public List<Person> findByLastName(String lastName) { 
    //begintransaction 
     return getHibernateTemplate().find("from Person where lastName=?", lastName); 
    //Commit 
    } 

不知AppFuse的是如何结束了与session.beginTransaction()和session.getTransaction的DAO操作() 。承诺();

通过使用这种技术,程序员不必担心hibernate事务stuff.I想要它的方式,即使dao方法被覆盖,事务包装代码应该会自动到来。 我已经尝试将dao传递给装饰器类,并将装饰器类中的dao方法调用包装起来。但由于dao接口方法将发生变化,所以思路dint起作用。我们究竟能够实现这一点。

回答

1

我不知道AppFuse是怎么做到的,但是将事务管理引入应用程序的服务层的一种非常常见的方式是使用面向方面编程(Aspect Oriented Programming)。如果你使用的是Spring Framework,this(来自手册)是一个很好的参考。

相关问题