分享

SpringMVC3.1 Hibernate4.1.7完全基于注解配置(零配置文件)

 旭龙 2012-12-27

其实这篇文章应该是上篇《Servlet3.0下基于注解的SpringMVC3.1配置 完全零配置文件》的续篇,因为上篇只介绍到web工程和Spring(包括MVC)的零配置,相对于传统的SSH来说,相当于SS零配置了。那么S和H的结合如果零配置文件呢。

Hibernate的注解配置大家应该不会陌生。主要就是对实体类的配置,注明对应的表和字段即可。


01./**
02.* 用户模型
03.*
04.* @author lihzh
05.* @alia OneCoder
06.*/
07.@Entity
08.@Table(name="snm_user")
09.public class User implements Serializable {
10. 
11.private static final long serialVersionUID = -6925982814013703984L;
12. 
13.@Id
14.private int id;
15.@Column(length = 20, nullable = false)
16.private String name;
17.@Column(length = 32, nullable = false)
18.private String password;
19.@Column(length = 64, nullable = false)
20.private String email;
21.@Column(name = "ctime", length = 20, nullable = false)
22.private long createTime;
23.....


 

主要还是原有数据源和SessionFactory的注解配置方式的改变。这里利用Spring提供的注解方式,单独抽出一个数据源配置类 

 

01./**
02.* 数据源配置类
03.*
04.* @author lihzh
05.* @alia OneCoder
06.*/
07.@Configuration
08.@PropertySource("/conf/jdbc.properties")
09.public class DataSourceConfig {
10. 
11.@Value("${jdbc.driverClass}") String driverClass;
12.@Value("${jdbc.url}") String url;
13.@Value("${jdbc.user}") String user;
14.@Value("${jdbc.password}") String password;
15. 
16.@Bean
17.public DataSource dataSource() throws PropertyVetoException {
18.ComboPooledDataSource dataSource = new ComboPooledDataSource();
19.dataSource.setDriverClass(driverClass);
20.dataSource.setJdbcUrl(url);
21.dataSource.setUser(user);
22.dataSource.setPassword(password);
23.return dataSource;
24.}
25. 
26.@Bean
27.public LocalSessionFactoryBean sessionFactory() throws PropertyVetoException {
28.LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
29.sessionFactoryBean.setDataSource(dataSource());
30.Properties hibernateProperties = new Properties();
31.hibernateProperties.setProperty("hibernate.dialect", "org.hibernate.dialect.<a href="http://www./database/dbmy/" target="_blank" class="keylink">MySQL</a>Dialect");
32.sessionFactoryBean.setHibernateProperties(hibernateProperties);
33.sessionFactoryBean.setPackagesToScan("com.coderli.shurnim.*.model");
34.return sessionFactoryBean;
35.}
36. 
37.@Bean
38.public HibernateTransactionManager txManager() throws PropertyVetoException {
39.HibernateTransactionManager txManager = new HibernateTransactionManager();
40.txManager.setSessionFactory(sessionFactory().getObject());
41.return txManager;
42.}
43.}


 

配置了数据源,SessionFactory和事物管理类。在SessionFactory中声明了扫描实体注解的包路径。这里把数据源的配置单独提到了jdbc.properties这个配置文件中,主要是考虑在实际实施过程中,数据库链接是一个需要经常修改的项,所以提出在项目配置之外,以方便实施人员独立配置。www.

然后在原有的DefaultAppConfig中引用该配置。用@Import注解:

1.@Configuration
2.@ComponentScan(basePackages = "com.coderli.shurnim.*.biz")
3.@Import(DataSourceConfig.class)
4.@EnableTransactionManagement
5.public class DefaultAppConfig {


 

同时启用了事物注解。至此,Spring3.1+Hibernate4.1.7的配置基本完成了。启动项目。稍微修改一下原UserAction,使其读取数据库


1.@RequestMapping("/user.do")
2.@Transactional
3.public void test(HttpServletResponse response) throws IOException {
4._log.info("Hi, u guy");
5.List<User> users = userDAO.getAll();
6.response.getWriter().write("name: " + users.get(0).getName() + "; email: " + users.get(0).getEmail());
7.}

 

\

启动服务,一切OK。

需要说明的是,OneCoder的学习习惯是不停的折腾,所以这里虽然是配置好了,正常使用。但是在配置过程中,还是遇到一些没有解决的问题。比如,根据@Configuration的注解说明,OneCoder曾响在DataSourceConfig中仅仅保留数据源配置,将SessionFactory和事物的配置都放到AppConfig中,然后通过@Autowire或者@Inject的注解引用进来,用了两种方式都还没有成功。待OneCoder研究清楚后,再一一说明。这里给出配置,仅仅给大家提供一个样例参考。更多的细节,还需要大家自己研究:)。OneCoder感觉,这种配置方式,还有挺有意思的。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多