0
我得到了多個DAO類,它擴展到一個BaseDAO,並且我在BaseDAO中打開一個新的會話,以便所有的DAO將使用同一個會話。休眠會話工廠多個DAO的一個新會話
@Autowired
public BaseDAOImpl(SessionFactory sessionFactory) {
super(sessionFactory);
this.mySession = sessionFactory.openSession();
logger.info("My Session is Open.");
}
public Session getMySession(){
return this.mySession;
}
@Repository("countryDAO")
public class CountryDAOImpl extends BaseDAOImpl<Country> implements CountryDAO{
@Autowired
public CountryDAOImpl(SessionFactory sessionFactory) {
super(sessionFactory);
}
}
@Repository("regionDAO")
public class RegionDAOImpl extends BaseDAOImpl<Region> implements RegionDAO{
@Autowired
public RegionDAOImpl(SessionFactory sessionFactory) {
super(sessionFactory);
}
}
在我的服務類我自動佈線2 DAO。
@Autowired
CountryDAO countryDAO;
@Autowired
RegionDAO regionDAO;
在我的控制檯中,我看到我的會話打開了兩次。這是否意味着它打開2個新的會話?我不想使用當前會話,所以我使用openSession()。當我做countryDAO.getMySession()。clear()時,它只清除在countryDAO會話中加載的實體,但不清除regionDAO。
我怎樣才能只使用1會話的所有DAO? –
我的程序有一個循環,我需要提交每個循環,所以我不想使用getCurrentSession() –
我不清楚你的需要。你應該添加循環和「提交每個循環」到你的問題。 – Rocherlee