问题:使用mybatis时,一个sqlsessionfactory.opensession的方法,能否同时兼容多个dao的操作
例如,我在pojo a 的dao,aDAO的插入操作中,实例化了一个session,
SqlSession session = sqlSessionFactory.openSession();
ADAO aDAO = session.getMapper(ADAO.class);
此时由于我要同时对pojo b进行一些操作,那么我可不重新实例化新的session,而是直接使用之前实例的session a
BDAO bDAO = session.getMapper(BDAO.class)
如果可以这么操作的话,请问有什么限制(因为如果是删除,增加,更新的操作的话,是需要提交会话的,而查询不需要)
迷茫2017-04-17 18:00:32
mybatis
이 SqlSessionManager
클래스를 통해 관리되는 경우 각 스레드는 공통 Session
Session
이 통합 플러그인에서 트랜잭션을 활성화하지 않는 쿼리/업데이트 문은 mybatis-spring
에 해당합니다. 트랜잭션이 활성화된 경우 이 트랜잭션의 쿼리/업데이트는 모두 <를 공유합니다. 🎜> Session
Session
은 스레드로부터 안전하지 않으므로 mybatis
Executor
Session
은 최대 하나의 스레드에서만 재사용할 수 있습니다.
PHP中文网2017-04-17 18:00:32
물론 세션은 여러 DAO(추가/삭제/수정/확인 포함)를 작동할 수 있습니다. 물론 이러한 DAO 작업은 세션이 제출/롤백될 때 트랜잭션의 특성을 충족해야 합니다. 즉, 모든 수정이 성공하거나, 아니면 모두 실패합니다. 유일한 제한 사항은 동일한 세션에 있기 때문에 이러한 DAO는 동일한 데이터베이스에 액세스해야 한다는 것입니다.