Tôi đang cố di chuyển thiết lập spring3.2.x + hibernate4.x từ cấu hình xml sang java.
Heres một đoạn mã hiện:Hibernate SessionFactory vs Spring LocalSessionFactoryBean
import org.hibernate.SessionFactory;
import org.hibernate.Query;
import org.hibernate.Session;
public class StockDaoImpl implements StockDao{
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public void save(Stock stock){
Session session = getSessionFactory().openSession();
try{
session.save(stock);
}
finally{
session.close();
}
}
Mùa xuân tập tin cấu hình
<!-- Stock Data Access Object -->
<bean id="stockDao" class="com.data.dao.StockDaoImpl" >
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="dataSource">
.....
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="hibernateProperties">
......
</property>
<property name="mappingResources">
.......
</property>
</bean>
này hoạt động tốt - nhưng làm thế nào để tôi tái xác định cấu hình này trong java?
Heres một nỗ lực -
@Bean
public StockDao stockDao() {
StockDaoImpl dao=new StockDaoImpl();
dao.setSessionFactory(sessionFactory());
return dao;
}
......
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(restDataSource());
sessionFactory.setPackagesToScan(new String[] { .....});
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;
}
Nhưng điều này sẽ không biên dịch như sessionFacotry được gọi là không mùa xuân của LocalSessionFactoryBean?
Làm cách nào để điều chỉnh việc này?
Điều này sẽ không biên dịch: lỗi biên dịch chính xác và đầy đủ là gì? Tại sao bạn không sử dụng autowiring và classpath quét thay vì xác định DAO của bạn một cách rõ ràng? –
com \ data \ config \ PersistenceConfig.java: 32: setSessionFactory (org.hibernate.Sessi onFactory) trong com.data.dao.StockDaoImpl không thể được áp dụng cho (org.springframewor k.orm.hibernate4.LocalSessionFactoryBean) dao .setSessionFactory (sessionFactory()); – IUnknown