SpringMVC4+Spring4+Hibernate4框架整合


                            SpringMVC4 + Spring4 + Hibernate4 框架搭建中。。。


作者:vashon

时间:2016-09-03


前言


现在很多企业流行用mybatis + spring + springmvc框架,但是mybatis或ibatis编写SQL较麻烦且对于数据库的移植性不好,你觉得呢?如果你也感觉mybatis或ibatis编写SQL较麻烦,那SpringMVC+Spring+Hibernate的整合适合你,如果你觉得Strut2没有SpringMVC好用,存在漏洞,执行效率不高容易爆内存,那SpringMVC+Spring+Hibernate整合适合你,看好SpringMVC+Spring+Hibernate的搭配,此SSH非彼SSH。

总体来说:Hibernate入门门槛比Mybatis高,但个人还是偏向于Hibernate,用惯了Hibernate的都感觉Hibernate才是标准的ORM框架,而且数据库可移植性好(换数据库只需修改方言和数据库配置即可);Mybatis这种半自动化的虽然灵活,可优化SQL,但是对于数据库的移植性来说就差了,而对于Hiberante只要控制的好,功能更强大。


选择SpringMVC4+Spring4+Hibernate4的原因


仔细分析过Struts2与SpringMVC、Mybatis与Hibernate的优势与劣势之后,总想搭建出一套在表现出、持久层中整体占优势的框架。于是就决定了SpringMVC+Spring+Hibernate框架的整合搭建,为了考虑到系统以后会用到新框架的一些特性,所有就决定搭建SpringMVC4+Spring4+Hibernate4的框架。


目标:有点追求,搭建出一套属于自己的框架,慢慢维护这套框架,深入研究这套框架的新特性,封装这套框架,让它变得越来越好。。。也让自己拥有“走在架构师路上”的感觉。



准备工作


hibernate4下载地址  http://hibernate.org/orm/

SpringMVC  官网:http://projects.spring.io/spring-framework
下载地址:http://repo.spring.io/release/org/springframework/spring/4.2.2.RELEASE/


仅下载:

spring-framework-4.2.2.RELEASE-dist.zip   
spring-framework-4.2.2.RELEASE-docs.zip 
spring-framework-4.2.2.RELEASE-schema.zip 


后续将加入Spring-Security的安全访问控制解决方案的安全框架

下载地址:http://repo.spring.io/libs-release-local/org/springframework/security/spring-security/

Spring Security开发手册:http://docs.spring.io/spring-security/site/docs/4.1.0.RELEASE/reference/htmlsingle/#ns-minimal


搭建需要准备jar(目前基础版本,后面会随着spring security应用以及基类封装jar会增多):


                                                   SpringMVC4+Spring4+Hibernate4框架整合_第1张图片



搭建环境的配置


一、web.xml中的配置文件:




	nssh
	
		index.html
		index.htm
		index.jsp
		default.html
		default.htm
		default.jsp
	

	
	
		contextConfigLocation
		classpath:applicationContext.xml
	
	
		org.springframework.web.context.ContextLoaderListener
	

	
	
		dispatcherServlet
		org.springframework.web.servlet.DispatcherServlet
		
		
			contextConfigLocation
			classpath:springmvc.xml
		
		1
	
	
		dispatcherServlet
		/*
	

	
	
		characterEncodingFilter
		org.springframework.web.filter.CharacterEncodingFilter
		
			encoding
			UTF-8
		
	
	
		characterEncodingFilter
		/*
	
	
	
	
		hiddenHttpMethodFilter
		org.springframework.web.filter.HiddenHttpMethodFilter
	
	
		hiddenHttpMethodFilter
		/*
	
	



二、Spring的applicationContext.xml配置文件:





	 
	
		
		
	
	
	
	
	
	
	
		
		
		
		
	
	
	
	
		
		
		
		
			
		
		
		
		
		
			
			
				org.hibernate.dialect.MySQLInnoDBDialect
				true
				true
				update
			
		
	
	
	
	
		
	
	



三、SpringMVC中springmvc.xml文件:





	
	
		
		
	

	
	
		
		 
	

	
	
	
	




四、数据库db.properties文件:


jdbc.user=root
jdbc.password=root
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/mysql

#jdbc.user=ssh
#jdbc.password=ssh
#jdbc.driverClass=oracle.jdbc.driver.OracleDriver
#jdbc.jdbcUrl=jdbc:oracle:thin:@localhost:1521:ORCL



测试环节


一、编写测试类:


SpringMVC4+Spring4+Hibernate4框架整合_第2张图片


二、测试结果:


SpringMVC4+Spring4+Hibernate4框架整合_第3张图片



SpringMVC4+Spring4+Hibernate4框架整合_第4张图片

控制台出现的红色部分是因为log日子没有处理


log日子处理:


导入log4j.jar

然后修改log4j.properties文件如下(日子输出等级根据需求而设置):

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=warn, stdout

#log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug
log4j.logger.com.ywx=debug



日志处理为debug后的输出为:


SpringMVC4+Spring4+Hibernate4框架整合_第5张图片



现在SpirngMVC+Spring+Hibernate的框架整合完成,目前还是一个空壳,其底层的DAO基类还在封装中。。。



基础代码封装遇到的问题

1、Spring4+Hibernate4整合后SessionFactory、Session及log的问题

2、mappedBy与@JoinColumn共存问题

3、Hibernate4主键生成策略问题



框架整合搭建完成,底层对Hibernate Dao的原生API封装完成,还加了一套字典、用户权限后的jar:

                          SpringMVC4+Spring4+Hibernate4框架整合_第6张图片


本套架构借鉴了公司一个大型项目底层架构的同时,在其基础上扩展了dao和service层的多态,解决了部分单继承的局限。整体来说架构的健壮性增强了,也提供了对事务一致性的控制,但其复杂度也增加了。总的来说,这套后台的架构我甚是满意 ^ _ ^,后续会提供源码。



集成Spring-Security安全访问控制框架



1、下载Spring-Security:http://repo.spring.io/libs-release-local/org/springframework/security/spring-security/


SpringMVC4+Spring4+Hibernate4框架整合_第7张图片

下载第一个,里面包含了所有的文件。




源码请点击:源码下载


框架图:

SpringMVC4+Spring4+Hibernate4框架整合_第8张图片



你可能感兴趣的:(Hibernate,Spring,SpringMVC,SpringMVC,Spring)