나는 Hiberante 및 Spring에 문제가 있습니다.최대 절전 모드 및 스프링 세션 구성
엔티티를 모두 구할 때 하위 프로퍼티를 사용하면 세션이 닫히기 때문에 게으른로드가 실패합니다 ... 왜 일찍 세션을 닫을 수 있습니까? 서비스를 종료하거나 스레드 당 하나의 세션을 가져갈 때까지 기다릴 수 없습니까?
이
이 내 DAO이다<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan">
<list>
<value>com.cinebot.db.entity</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
내 구성입니다 :
@Transactional
public class Dao {
@Autowired
private SessionFactory sessionFactory;
public Session getSession(){
return sessionFactory.getCurrentSession();
}
@SuppressWarnings("unchecked")
public <T> T get(Class<T> classe, Serializable id) throws Exception {
if(id==null) return null;
T obj = (T) getSession().get(classe, id);
return obj;
}
}
와 나는 오류를 얻을 곳이있는 내부 (getEventi()는로드 게으른) @ 서비스 클래스 :
Spettacoli spettacolo = dao.get(Spettacoli.class, spettacoloId);
if(spettacolo.getEventi().getScadenza()>0) throw new LogicalException("Spettacolo scaduto");
엔티티 속성에 액세스하는 위치는 어디입니까? –
은 getSession()으로 해당 엔티티를 가져온 직후에 @Service 클래스에 있습니다. get() – Tobia
DAO 메소드를 포함하여 여기에 서비스 메소드 코드를 표시 할 수 있습니까? 거래 내역 –