1. 程式人生 > >SpringMVC+Spring+Hibernate+Oracle 實現圖書管理(CRUD)

SpringMVC+Spring+Hibernate+Oracle 實現圖書管理(CRUD)

package ssh;


import javax.sql.DataSource;


import org.hibernate.SessionFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.hibernate5.HibernateTransactionManager;
import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;


@Configuration
@ComponentScan("ssh")
@PropertySource("classpath:jdbc.properties") // 引入外部屬性檔案到Environment
@EnableTransactionManagement // 開啟spring事務管理支援
public class AppConfig {


@Bean
public LocalSessionFactoryBean sessionFactory(DataSource dataSource) {
LocalSessionFactoryBean factoryBean = new LocalSessionFactoryBean();
factoryBean.setDataSource(dataSource);
factoryBean.setPackagesToScan("ssh.domain"); // 自動掃描並註冊實體類
return factoryBean;
}

@Bean                       // 依賴Environment
public DataSource dataSource(Environment env) {
DriverManagerDataSource ds = new DriverManagerDataSource();
// env.getProperty("someKey") 獲得屬性值
ds.setDriverClassName(env.getProperty("jdbc.driverClassName"));
ds.setUrl(env.getProperty("jdbc.url"));
ds.setUsername(env.getProperty("jdbc.username"));
ds.setPassword(env.getProperty("jdbc.password"));
return ds;
}

@Bean
public PlatformTransactionManager transactionManager(SessionFactory sessionFactory) {
HibernateTransactionManager transactionManager = new HibernateTransactionManager();
transactionManager.setSessionFactory(sessionFactory);
return transactionManager;
}

@Bean // 負責將控制器方法返回的字串對映到某個JSP
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class); // 支援jsp及標準taglib
// customers => /WEB-INF/jsp/customers.jsp
// xyz => /WEB-INF/jsp/ + xyz + .jsp
viewResolver.setPrefix("/WEB-INF/jsp/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}