0
私はBaseDAOまで伸びる複数のDAOクラスを持っており、すべてのDAOが同じセッションを使用するようにBaseDAOに新しいセッションを開きます。Hibernateセッションファクトリ複数の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回印刷されています。それは2つの新しいセッションを開くことを意味しますか?何らかの理由で現在のセッションを使用したくないので、openSession()を使用します。私がcountryDAO.getMySession()。clear()を実行すると、regionDAOではなくcountryDAOセッションに読み込まれたエンティティのみがクリアされます。
を使用して休止状態の設定を更新する必要があります。すべてのDAOに対して1セッションしか使用できないのですか? –
私のプログラムはループしているので、各ループをコミットする必要がありますので、getCurrentSession()を使用したくありません。 –
あなたの必要性についてはっきりしていません。あなたはあなたの質問にあなたのルーピングと "各ループをコミット"を追加する必要があります。 – Rocherlee