Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ʹÓÃMaven´î½¨Struts2+Spring3+Hibernate4µÄÕûºÏ¿ª·¢»·¾³
 
×÷Õߣº¹Â°Á²ÔÀÇ À´Ô´£º²©¿ÍÔ° ·¢²¼ÓÚ 2015-7-28
  4277  次浏览      28
 

¡¡×öÁËÈýÄê¶àµÄJavaEE¿ª·¢ÁË£¬ÔÚÆ½Ê±µÄJavaEE¿ª·¢ÖУ¬ÎªÁËÄܹ»ÓÃ×î¿ìµÄËÙ¶È¿ª·¢ÏîÄ¿£¬Ò»°ã¶¼»áÑ¡ÔñʹÓÃStruts2£¬SpringMVC£¬Spring£¬Hibernate£¬MyBatisÕâЩ¿ªÔ´¿ò¼ÜÀ´¿ª·¢ÏîÄ¿£¬¶øÕâЩ¿ò¼ÜÒ»°ã²»Êǵ¥¶ÀʹÓõ쬾­³£ÊÇStruts2+Spring3+Hibernate¡¢SpringMVC+Spring+Hibernate¡¢SpringMVC+Spring+MybatisÕ⼸ÖÖ×éºÏÖеÄÒ»ÖÖ£¬Ò²¾ÍÊǶà¸ö¿ò¼ÜÅäºÏÆðÀ´Ê¹Ó᣽ñÌìÀ´×ܽáÒ»ÏÂÈçºÎʹÓÃMaven´î½¨Struts2+Spring3+Hibernate4µÄÕûºÏ¿ª·¢»·¾³¡£

Ò»¡¢½¨Á¢Maven¹¤³Ì

µÚÒ»²½£º

µÚ¶þ²½£º

µÚÈý²½£º

´´½¨ºÃµÄÏîÄ¿ÈçÏÂͼËùʾ£º

µÚËIJ½£º

×¢Ò⣺ÕâÀïµÄJDKҪѡÔñĬÈϵģ¬ÕâÑù±ðÈËÔÚʹÓõÄʱºò£¬ÈçºÎJDk²»Ò»ÖµĻ°Ò²²»»á³ö´í£¬ÈçÏÂͼËùʾ£º

µÚÎå²½£º

´´½¨Maven±ê׼Ŀ¼

src/main/java 
¡¡¡¡¡¡¡¡src/main/resources
¡¡¡¡¡¡¡¡src/test/java
¡¡¡¡¡¡¡¡src/test/resources

µÚÁù²½£º

·¢²¼ÏîÄ¿£ºMaven install

Çå³ý±àÒë¹ýµÄÏîÄ¿£ºMaven clean

Maven installÃüÁîÖ´Ðнá¹ûÈçÏ£º

OK£¬Maven¹¤³Ì´´½¨³É¹¦£¡

¶þ¡¢´î½¨Spring3¿ª·¢»·¾³

2.1¡¢ÏÂÔØSpring3ÐèÒªµÄjar°ü

1.spring-core

2.spring-context

3.spring-jdbc

4.spring-beans

5.spring-web

6.spring-expression

7.spring-orm

ÔÚpom.xmlÖбàдSpring3ÐèÒªµÄ°ü£¬maven»á×Ô¶¯ÏÂÔØÕâЩ°üÒÔ¼°Ïà¹ØµÄÒÀÀµjar°ü¡£

<!-- spring3 -->
2 <dependency>
3 <groupId>org.springframework</groupId>
4 <artifactId>spring-core</artifactId>
5 <version>3.1.2.RELEASE</version>
6 </dependency>
7 <dependency>
8 <groupId>org.springframework</groupId>
9 <artifactId>spring-context</artifactId>
10 <version>3.1.2.RELEASE</version>
11 </dependency>
12 <dependency>
13 <groupId>org.springframework</groupId>
14 <artifactId>spring-jdbc</artifactId>
15 <version>3.1.2.RELEASE</version>
16 </dependency>
17 <dependency>
18 <groupId>org.springframework</groupId>
19 <artifactId>spring-beans</artifactId>
20 <version>3.1.2.RELEASE</version>
21 </dependency>
22 <dependency>
23 <groupId>org.springframework</groupId>
24 <artifactId>spring-web</artifactId>
25 <version>3.1.2.RELEASE</version>
26 </dependency>
27 <dependency>
28 <groupId>org.springframework</groupId>
29 <artifactId>spring-expression</artifactId>
30 <version>3.1.2.RELEASE</version>
31 </dependency>
32 <dependency>
33 <groupId>org.springframework</groupId>
34 <artifactId>spring-orm</artifactId>
35 <version>3.1.2.RELEASE</version>
36 </dependency>

2.2¡¢±àдSpringÅäÖÃÎļþ

ÔÚsrc/main/resourcesĿ¼Ï´´½¨Ò»¸öspring.xmlÎļþ£¬ÈçÏÂͼËùʾ£º

spring.xmlÎļþµÄÄÚÈÝÈçÏ£º

<?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:context="http://www.springframework.org/schema/context"
5 xsi:schemaLocation="http://www.springframework.org/schema/beans
6 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
7 http://www.springframework.org/schema/context
8 http://www.springframework.org/schema/context/spring-context-3.0.xsd
9 ">
10
11 <!-- ÒýÈëÊôÐÔÎļþ,config.propertiesλÓÚsrc/main/resourcesĿ¼Ï -->
12 <context:property-placeholder location="classpath:config.properties" />
13
14 <!-- ×Ô¶¯É¨ÃèdaoºÍservice°ü(×Ô¶¯×¢Èë) -->
15 <context:component-scan base-package="me.gacl.dao,me.gacl.service" />
16
17 </beans>

ÔÚsrc/main/resourcesĿ¼Ï´´½¨Ò»¸öconfig.propertiesÎļþ£¬ÈçÏÂͼËùʾ£º

config.propertiesÎļþÖ÷ÒªÊÇÓÃÀ´±àдһЩϵͳµÄÅäÖÃÐÅÏ¢£¬ÀýÈçÊý¾Ý¿âÁ¬½ÓÐÅÏ¢£¬config.propertiesÎļþÖеÄÄÚÈÝÔÝʱÏȲ»±àд£¬µÈÕûºÏµ½HibernateʱÔÙ±àд¾ßÌåµÄÊý¾Ý¿âÁ¬½ÓÐÅÏ¢¡£

2.3¡¢±àдµ¥Ôª²âÊÔ

Ê×ÏÈ£¬ÔÚsrc/main/javaÖд´½¨me.gacl.service°ü£¬ÔÚ°üÖбàдһ¸ö UserServiceI ½Ó¿Ú£¬ÈçÏÂͼËùʾ£º

´úÂëÈçÏ£º

package me.gacl.service;
2
3 /**
4 * ²âÊÔ
5 * @author gacl
6 *
7 */
8 public interface UserServiceI {
9
10 /**
11 * ²âÊÔ·½·¨
12 */
13 void test();
14 }

È»ºó£¬ÔÚsrc/main/javaÖд´½¨me.gacl.service.impl°ü£¬ÔÚ°üÖбàдUserServiceImplʵÏÖÀ࣬ÈçÏÂͼËùʾ£º

´úÂëÈçÏ£º

package me.gacl.service.impl;
2
3 import org.springframework.stereotype.Service;
4
5 import me.gacl.service.UserServiceI;
6 //ʹÓÃSpringÌṩµÄ@Service×¢½â½«UserServiceImpl±êעΪһ¸öService
7 @Service("userService")
8 public class UserServiceImpl implements UserServiceI {
9
10 @Override
11 public void test() {
12 System.out.println("Hello World!");
13 }
14
15 }

½øÐе¥Ôª²âÊÔʱÐèҪʹÓõ½Junit£¬ËùÒÔÐèÒªÔÚpom.xmlÎļþÖÐÌí¼ÓJunitµÄjar°üÃèÊö£¬ÈçÏ£º

<!-- Junit -->
2 <dependency>
3 <groupId>junit</groupId>
4 <artifactId>junit</artifactId>
5 <version>4.12</version>
6 <scope>test</scope>
7 </dependency>

<scope>test</scope>ÕâÀïµÄtest±íʾ²âÊÔʱ±àÒësrc/main/testÎļþ¼ÐÖеÄÎļþ£¬µÈ·¢²¼µÄʱºò²»±àÒë¡£ ×îºó£¬ÔÚsrc/main/testÖд´½¨me.gacl.test°ü£¬ÔÚ°üÖбàд TestSpringÀ࣬ÈçÏÂͼËùʾ£º

´úÂëÈçÏ£º

 package me.gacl.test;
2
3 import me.gacl.service.UserServiceI;
4
5 import org.junit.Test;
6 import org.springframework.context.ApplicationContext;
7 import org.springframework.context.support.ClassPathXmlApplicationContext;
8
9 public class TestSpring {
10
11 @Test
12 public void test(){
13 //ͨ¹ýspring.xmlÅäÖÃÎļþ´´½¨SpringµÄÓ¦ÓóÌÐòÉÏÏÂÎÄ»·¾³
14 ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:spring.xml");
15 //´ÓSpringµÄIOCÈÝÆ÷ÖлñÈ¡bean¶ÔÏó
16 UserServiceI userService = (UserServiceI) ac.getBean("userService");
17 //Ö´ÐвâÊÔ·½·¨
18 userService.test();
19 }
20 }

JUnit TestÔËÐУ¬½á¹ûÈçͼËùʾ£º

2.4¡¢ÔÚweb.xmlÖÐÅäÖÃSpring¼àÌýÆ÷

<!-- Spring¼àÌýÆ÷ -->
2 <listener>
3 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
4 </listener>
5 <!-- SpringÅäÖÃÎļþλÖà -->
6 <context-param>
7 <param-name>contextConfigLocation</param-name>
8 <param-value>classpath:spring.xml</param-value>
9 </context-param>

ÔÚtomcat·þÎñÆ÷ÖнøÐвâÊÔ£¬ÏÈÖ´ÐС¾Maven install¡¿ÃüÁî·¢²¼ÏîÄ¿,È»ºó½«SSHEÏîÄ¿²¿Êðµ½tomcat·þÎñÆ÷£¬×îºóÆô¶¯tomcat·þÎñÆ÷

tomcat·þÎñÆ÷Æô¶¯µÄ¹ý³ÌÖÐûÓгöÏÖ±¨´í£¬ÊäÈëµØÖ·£ºhttp://localhost:8080/SSHE/ Äܹ»Õý³£½øÐзÃÎÊ£¬¾Í˵Ã÷Spring3µÄ¿ª·¢»·¾³´î½¨³É¹¦£¬ÈçÏÂͼËùʾ£º

²âÊÔͨ¹ý£¬Spring3¿ª·¢»·¾³´î½¨³É¹¦£¡

Èý¡¢´î½¨Struts2¿ª·¢»·¾³²¢ÕûºÏSpring3

3.1¡¢ÏÂÔØStruts2ÐèÒªµÄjar°ü

1.strtus2-core

2.struts2-spring-plugin(struts2ºÍSpringÕûºÏʱÐèҪʹÓõ½µÄ²å¼þ)

3.struts2-convention-plugin(ʹÓÃÁËÕâ¸ö²å¼þÖ®ºó£¬¾Í¿ÉÒÔ²ÉÓÃ×¢½âµÄ·½Ê½ÅäÖÃStrutsµÄAction£¬ÃâÈ¥ÁËÔÚstruts.xmlÖеķ±ËöÅäÖÃÏî)

4.struts2-config-browser-plugin(config-browser-plugin²å¼þ²»ÊDZØÐëµÄ£¬µ«ÊÇʹÓÃÁËÕâ¸ö²å¼þÖ®ºó£¬¾Í¿ÉÒԺܷ½±ãµÄä¯ÀÀÏîÄ¿ÖеÄËùÓÐaction¼°ÆäÓë jsp viewµÄÓ³Éä)

ÔÚpom.xmlÎļþÖбàдStruts2ËùÐèÒªµÄjar°ü£¬Maven»á×Ô¶¯ÏÂÔØÕâЩ°ü

<!-- Struts2µÄºËÐİü -->
2 <dependency>
3 <groupId>org.apache.struts</groupId>
4 <artifactId>struts2-core</artifactId>
5 <version>2.3.16</version>
6 <!--
7 ÕâÀïµÄ exclusions ÊÇÅųý°ü£¬ÒòΪ Struts2ÖÐÓÐjavassist£¬HibernateÖÐÒ²ÓÐjavassist,
8 ËùÒÔÈç¹ûÒªÕûºÏHibernate£¬Ò»¶¨ÒªÅųýµôStruts2ÖеÄjavassist£¬·ñÔò¾Í³åÍ»ÁË¡£
9 <exclusions>
10 <exclusion>
11 <groupId>javassist</groupId>
12 <artifactId>javassist</artifactId>
13 </exclusion>
14 </exclusions>
15 -->
16 </dependency>
17 <!-- convention-plugin²å¼þ£¬Ê¹ÓÃÁËÕâ¸ö²å¼þÖ®ºó£¬¾Í¿ÉÒÔ²ÉÓÃ×¢½âµÄ·½Ê½ÅäÖÃAction -->
18 <dependency>
19 <groupId>org.apache.struts</groupId>
20 <artifactId>struts2-convention-plugin</artifactId>
21 <version>2.3.20</version>
22 </dependency>
23 <!--config-browser-plugin²å¼þ£¬Ê¹ÓÃÁËÕâ¸ö²å¼þÖ®ºó£¬ ¾Í¿ÉÒԺܷ½±ãµÄä¯ÀÀÏîÄ¿ÖеÄËùÓÐaction¼°ÆäÓë jsp viewµÄÓ³Éä -->
24 <dependency>
25 <groupId>org.apache.struts</groupId>
26 <artifactId>struts2-config-browser-plugin</artifactId>
27 <version>2.3.20</version>
28 </dependency>
29 <!-- Struts2ºÍSpringÕûºÏ²å¼þ -->
30 <dependency>
31 <groupId>org.apache.struts</groupId>
32 <artifactId>struts2-spring-plugin</artifactId>
33 <version>2.3.4.1</version>
34 </dependency>

3.2¡¢±àдStruts.xmlÅäÖÃÎļþ

ÔÚsrc/main/resourcesĿ¼Ï´´½¨Ò»¸östruts.xmlÎļþ£¬ÈçÏÂͼËùʾ£º

struts.xmlÎļþÖеÄÄÚÈÝÈçÏ£º

<?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
3 <struts>
4
5 <!-- Ö¸¶¨ÓÉspring¸ºÔðaction¶ÔÏóµÄ´´½¨ -->
6 <constant name="struts.objectFactory" value="spring" />
7 <!-- ËùÓÐÆ¥Åä*.actionµÄÇëÇó¶¼ÓÉstruts2´¦Àí -->
8 <constant name="struts.action.extension" value="action" />
9 <!-- ÊÇ·ñÆôÓÿª·¢Ä£Ê½(¿ª·¢Ê±ÉèÖÃΪtrue,·¢²¼µ½Éú²ú»·¾³ºóÉèÖÃΪfalse) -->
10 <constant name="struts.devMode" value="true" />
11 <!-- strutsÅäÖÃÎļþ¸Ä¶¯ºó£¬ÊÇ·ñÖØÐ¼ÓÔØ(¿ª·¢Ê±ÉèÖÃΪtrue,·¢²¼µ½Éú²ú»·¾³ºóÉèÖÃΪfalse) -->
12 <constant name="struts.configuration.xml.reload" value="true" />
13 <!-- ÉèÖÃä¯ÀÀÆ÷ÊÇ·ñ»º´æ¾²Ì¬ÄÚÈÝ(¿ª·¢Ê±ÉèÖÃΪfalse,·¢²¼µ½Éú²ú»·¾³ºóÉèÖÃΪtrue) -->
14 <constant name="struts.serve.static.browserCache" value="false" />
15 <!-- ÇëÇó²ÎÊýµÄ±àÂ뷽ʽ -->
16 <constant name="struts.i18n.encoding" value="utf-8" />
17 <!-- ÿ´ÎHTTPÇëÇóϵͳ¶¼ÖØÐ¼ÓÔØ×ÊÔ´Îļþ£¬ ÓÐÖúÓÚ¿ª·¢(¿ª·¢Ê±ÉèÖÃΪtrue,·¢²¼µ½Éú²ú»·¾³ºóÉèÖÃΪfalse) -->
18 <constant name="struts.i18n.reload" value="true" />
19 <!-- ÎļþÉÏ´«×î´óÖµ -->
20 <constant name="struts.multipart.maxSize" value="104857600" />
21 <!-- ÈÃstruts2Ö§³Ö¶¯Ì¬·½·¨µ÷ÓÃ,ʹÓÃ̾ºÅ·ÃÎÊ·½·¨ -->
22 <constant name="struts.enable.DynamicMethodInvocation" value="true" />
23 <!-- ActionÃû³ÆÖÐÊÇ·ñ»¹ÊÇÓÃбÏß -->
24 <constant name="struts.enable.SlashesInActionNames" value="false" />
25 <!-- ÔÊÐí±êÇ©ÖÐʹÓñí´ïʽÓï·¨ -->
26 <constant name="struts.tag.altSyntax" value="true" />
27 <!-- ¶ÔÓÚWebLogic,Orion,OC4J´ËÊôÐÔÓ¦¸ÃÉèÖóÉtrue -->
28 <constant name="struts.dispatcher.parametersWorkaround" value="false" />
29
30 <package name="basePackage" extends="struts-default">
31
32
33 </package>
34
35 </struts>

3.3¡¢ÔÚweb.xmlÖÐÅäÖÃStruts2µÄ¹ýÂËÆ÷

<!-- Struts2µÄºËÐĹýÂËÆ÷ÅäÖà -->
2 <filter>
3 <filter-name>struts2</filter-name>
4 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
5 </filter>
6 <!-- Struts2¹ýÂËÆ÷À¹½ØËùÓеÄ.actionÇëÇó -->
7 <filter-mapping>
8 <filter-name>struts2</filter-name>
9 <url-pattern>*.action</url-pattern>
10 </filter-mapping>

3.4¡¢±àд²âÊÔ

Ê×ÏÈ£¬ÔÚsrc/main/javaÖд´½¨me.gacl.action°ü£¬ÔÚ°üÖбàдһ¸ö TestActionÀ࣬ÈçÏÂͼËùʾ£º

´úÂëÈçÏ£º

package me.gacl.action;
2
3 import me.gacl.service.UserServiceI;
4
5 import org.apache.struts2.convention.annotation.Action;
6 import org.apache.struts2.convention.annotation.Namespace;
7 import org.apache.struts2.convention.annotation.ParentPackage;
8 import org.springframework.beans.factory.annotation.Autowired;
9
10 @ParentPackage("basePackage")
11 @Action(value="strust2Test") //ʹÓÃconvention-plugin²å¼þÌṩµÄ@Action×¢½â½«Ò»¸ö ÆÕͨjavaÀà±êעΪһ¸ö¿ÉÒÔ´¦ÀíÓû§ÇëÇóµÄAction£¬ActionµÄÃû×ÖΪstruts2Test
12 @Namespace("/")//ʹÓÃconvention-plugin²å¼þÌṩµÄ@Namespace×¢½âΪÕâ¸öActionÖ¸¶¨Ò»¸öÃüÃû¿Õ¼ä
13 public class TestAction {
14
15 /**
16 * ×¢ÈëuserService
17 */
18 @Autowired
19 private UserServiceI userService;
20
21 /**
22 * http://localhost:8080/SSHE/strust2Test!test.action
23 * MethodName: test
24 * Description:
25 * @author xudp
26 */
27 public void test(){
28 System.out.println("½øÈëTestAction");
29 userService.test();
30 }
31 }

ÕâÀïʹÓÃ@Autowired×¢½â½«userService×¢Èëµ½UserActionÖС£

²âÊÔStruts2µÄ¿ª·¢»·¾³ÊÇ·ñ´î½¨³É¹¦£¬ÏÈÖ´ÐС¾Maven install¡¿²Ù×÷,È»ºó²¿Êðµ½tomcat·þÎñÆ÷£¬×îºóÆô¶¯tomcat·þÎñÆ÷ÔËÐÐ,

ÊäÈë·ÃÎʵØÖ·£ºhttp://localhost:8080/SSHE/strust2Test!test.action£¬·ÃÎʽá¹ûÈçÏ£º

²âÊÔͨ¹ý£¬Struts2µÄ¿ª·¢»·¾³´î½¨²¢ÕûºÏSpring³É¹¦!ÕâÀïÌáÒ»ÏÂÓöµ½µÄÎÊÌ⣬ÎÒÖ´ÐÐÍêMaven installÃüÁîÖ®ºó£¬ÖØÐ·¢²¼µ½tomcat·þÎñÆ÷ÔËÐУ¬µÚÒ»´ÎÔËÐÐʱ³öÏÖÁËÕÒ²»µ½actionµÄ404´íÎ󣬺óÀ´¾ÍÏÈÖ´ÐÐMaven clean£¬È»ºócleanÒ»ÏÂÏîÄ¿£¬ÔÙÖ´ÐÐMaven installÃüÁîÖØÐ±àÒëÏîÄ¿£¬È»ºóÔÙ·¢²¼µ½tomcat·þÎñÆ÷ÖÐÔËÐУ¬Õâ´Î¾Í¿ÉÒÔÕý³£·ÃÎʵ½actionÁË£¬Ê¹ÓÃMaven×ÜÊÇ»áÓöµ½Ò»Ð©Ææ¹ÖµÄÎÊÌ⣬ºÃÔÚÆ¾½è×ÅһЩƽʱ»ýÀ۵Ľâ¾öÎÊÌâµÄ¾­Ñé°ÑÎÊÌâ½â¾öÁË¡£

ËÄ¡¢´î½¨Hibernate4¿ª·¢»·¾³²¢ÕûºÏSpring3

4.1¡¢ÏÂÔØHibernate4ÐèÒªµÄjar°ü

1.hibernate-core

ÔÚpom.xmlÎļþÖбàдHibernate4ËùÐèÒªµÄjar°ü£¬Maven»á×Ô¶¯ÏÂÔØÕâЩ°ü¡£

<!-- hibernate4 -->
2 <dependency>
3 <groupId>org.hibernate</groupId>
4 <artifactId>hibernate-core</artifactId>
5 <version>4.1.7.Final</version>
6 </dependency>

×¢Ò⣺һ¶¨ÒªÅųýµôStruts2ÖеÄjavassist£¬·ñÔò¾Í³åÍ»ÁË¡£

4.2¡¢Ìí¼ÓÊý¾Ý¿âÇý¶¯jar°ü

ÎÒÃÇÖªµÀ£¬HibernateÊÇÓÃÓÚºÍÊý¾Ý¿â½»»¥µÄ£¬Ó¦ÓÃϵͳËùÓеÄCRUD²Ù×÷¶¼ÒªÍ¨¹ýHibernateÀ´Íê³É¡£¼ÈȻҪÁ¬½ÓÊý¾Ý¿â£¬ÄÇô¾ÍҪʹÓõ½Ïà¹ØµÄÊý¾Ý¿âÇý¶¯£¬ËùÒÔÐèÒª¼ÓÈëÊý¾Ý¿âÇý¶¯µÄjar°ü£¬¸ù¾Ý×ÔÉíÏîĿʹÓõÄÊý¾Ý¿âÔÚpom.xmlÎļþÖбàдÏàÓ¦µÄÊý¾Ý¿âÇý¶¯jar£º

MySQLÊý¾Ý¿âÇý¶¯jar£º

 <!-- mysqlÇý¶¯°ü -->
2 <dependency>
3 <groupId>mysql</groupId>
4 <artifactId>mysql-connector-java</artifactId>
5 <version>5.1.34</version>
6 </dependency>

SQLServerÊý¾Ý¿âÇý¶¯jar:

<!-- SQLServerÊý¾Ý¿âÇý¶¯°ü -->
2 <dependency>
3 <groupId>net.sourceforge.jtds</groupId>
4 <artifactId>jtds</artifactId>
5 <version>1.3.1</version>
6 </dependency>

ÕâÀïҪ˵һÏÂʹÓÃMaven¹ÜÀíOracle JDBCÇý¶¯µÄÎÊÌâÁË£¬Õý³£Çé¿öÏ£¬MavenÔÚÏÂÔØ oracleÊý¾Ý¿âÇý¶¯Ê±»á³ö´í£¬ÈçÏÂͼËùʾ£º

ÕâÊÇÓÉÓÚOracleÊÚȨÎÊÌ⣬Maven3²»ÌṩOracle JDBC driver£¬ÎªÁËÔÚMavenÏîÄ¿ÖÐÓ¦ÓÃOracle JDBC driver,±ØÐëÊÖ¶¯Ìí¼Óµ½±¾µØ²Ö¿â¡£

½â¾ö°ì·¨£ºÏÈ´ÓÍøÉÏÏÂÔØOracleµÄÇý¶¯°ü£¬È»ºóͨ¹ýMavenÃüÁî·Åµ½±¾µØ¿âÖÐÈ¥£º

°²×°ÃüÁ

mvn install:install-file -Dfile={Path/to/your/ojdbc.jar}
 -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.1.0 -Dpackaging=jar

ÀýÈç°ÑλÓÚF:\oracleÇý¶¯\ojdbc6.jarÌí¼Óµ½±¾µØ²Ö¿âÖÐ

Ö´ÐÐÃüÁ

mvn install:install-file -Dfile=F:/oracleÇý¶¯/ojdbc6.jar 
-DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.1.0 -Dpackaging=jar

ÈçÏÂͼËùʾ£º

È»ºóÔÚpom.xmlÎļþÖбàдojdbc6.jar°üµÄ<dependency>ÐÅÏ¢£¬ÈçÏÂËùʾ£º

 <!--OracleÊý¾Ý¿âÇý¶¯°ü£¬Õë¶ÔOracle11.2µÄojdbc6.jar -->
2 <dependency>
3 <groupId>com.oracle</groupId>
4 <artifactId>ojdbc6</artifactId>
5 <version>11.2.0.1.0</version>
6 </dependency>

ÓÉÓÚÎÒÃÇÒѾ­½«ojdbc6.jar°ü¼ÓÈëµ½±¾µØ²Ö¿âÖÐÁË£¬Òò´ËÕâ´Î¿ÉÒÔÕý³£Ê¹ÓÃÕë¶ÔOracleÊý¾Ý¿âµÄÇý¶¯°üÁË¡£ÈçÏÂͼËùʾ£º

4.3¡¢Ìí¼ÓÊý¾Ý¿âÁ¬½Ó³Øjar°ü

ÔÚÆ½Ê±¿ª·¢ÖУ¬ÎÒÃÇÒ»°ã¶¼»áʹÓÃÊý¾Ý¿âÁ¬½Ó³Ø£¬Ó¦ÓÃϵͳ³õʼ»¯Ê±£¬ÓÉÊý¾Ý¿âÁ¬½Ó³ØÏòÊý¾Ý¿âÉêÇëÒ»¶¨ÊýÁ¿µÄÊý¾Ý¿âÁ¬½Ó£¬È»ºó·Åµ½Ò»¸öÁ¬½Ó³ØÖУ¬µ±ÐèÒª²Ù×÷Êý¾Ý¿âʱ£¬¾Í´ÓÊý¾Ý¿âÁ¬½Ó³ØÖÐÈ¡³öÒ»¸öÊý¾Ý¿âÁ¬½Ó£¬Í¨¹ý´ÓÁ¬½Ó³ØÖлñÈ¡µ½µÄÊý¾Ý¿âÁ¬½Ó¶ÔÏóÁ¬½ÓÉÏÊý¾Ý¿â£¬È»ºó½øÐÐCRUD²Ù×÷£¬¹ØÓÚÊý¾Ý¿âÁ¬½Ó³ØµÄÑ¡Ôñ£¬³£ÓõÄÓÐDBCP£¬C3P0ºÍDruid£¬ÕâÀïÎÒÃÇʹÓÃDruid×÷ΪÎÒÃǵÄÊý¾Ý¿âÁ¬½Ó³Ø¡£ÕâÈýÖÖÁ¬½Ó³Ø¸÷×ÔÓи÷×ÔµÄÌØµã£¬×Ô¼ºÊìϤÄĸö¾ÍÓÃÄĸö£¬Âܲ·°×²Ë£¬¸÷ÓÐËù°®¡£

ÔÚpom.xmlÎļþÖбàдDruidµÄjar°ü£¬Maven»á×Ô¶¯ÏÂÔØ£¬ÈçÏ£º

<!--DruidÁ¬½Ó³Ø°ü -->
2 <dependency>
3 <groupId>com.alibaba</groupId>
4 <artifactId>druid</artifactId>
5 <version>1.0.12</version>
6 </dependency>

4.4¡¢Ìí¼Óaspectjweaver°ü

ʹÓÃSpringµÄaopʱÐèҪʹÓõ½aspectjweaver°ü£¬ËùÒÔÐèÒªÌí¼Óaspectjweaver°ü£¬ÔÚpom.xmlÎļþÖÐÌí¼ÓaspectjweaverµÄjar°ü£¬Maven»á×Ô¶¯ÏÂÔØ£¬ÈçÏ£º

<!--aspectjweaver°ü -->
2 <dependency>
3 <groupId>org.aspectj</groupId>
4 <artifactId>aspectjweaver</artifactId>
5 <version>1.8.5</version>
6 </dependency>

4.5¡¢±àдÁ¬½ÓÊý¾Ý¿âµÄÅäÖÃÐÅÏ¢

֮ǰÎÒÃÇÔÚsrc/main/resourcesĿ¼Ï´´½¨ÁËÒ»¸öconfig.propertiesÎļþ£¬ÀïÃæµÄÄÚÈÝÊǿյģ¬ÏÖÔÚÎÒÃǾÍÔÚÕâ¸öconfig.propertiesÎļþÖбàдÁ¬½ÓÊý¾Ý¿âÐèҪʹÓõ½µÄÏà¹ØÐÅÏ¢£¬ÈçÏÂËùʾ£º

#hibernate.dialect=org.hibernate.dialect.OracleDialect
2 #driverClassName=oracle.jdbc.driver.OracleDriver
3 #validationQuery=SELECT 1 FROM DUAL
4 #jdbc_url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
5 #jdbc_username=gacl
6 #jdbc_password=xdp
7
8 hibernate.dialect=org.hibernate.dialect.MySQLDialect
9 driverClassName=com.mysql.jdbc.Driver
10 validationQuery=SELECT 1
11 jdbc_url=jdbc:mysql://localhost:3306/sshe?useUnicode=true&characterEncoding =UTF-8&zeroDateTimeBehavior=convertToNull
12 jdbc_username=root
13 jdbc_password=XDP
14
15 #hibernate.dialect=org.hibernate.dialect.SQLServerDialect
16 #driverClassName=net.sourceforge.jtds.jdbc.Driver
17 #validationQuery=SELECT 1
18 #jdbc_url=jdbc:jtds:sqlserver://127.0.0.1:1433/sshe
19 #jdbc_username=sa
20 #jdbc_password=123456
21
22 #jndiName=java:comp/env/dataSourceName
23
24 hibernate.hbm2ddl.auto=update
25 hibernate.show_sql=true
26 hibernate.format_sql=true

4.6¡¢±àдHibernateÓëSpringÕûºÏµÄÅäÖÃÎļþ

ÔÚsrc/main/resourcesĿ¼ÏÂн¨Ò»¸öspring-hibernate.xmlÎļþ£¬ÈçÏÂͼËùʾ£º

spring-hibernate.xmlÎļþµÄÄÚÈÝÈçÏ£º

<?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="
3 http://www.springframework.org/schema/beans
4 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
5 http://www.springframework.org/schema/tx
6 http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
7 http://www.springframework.org/schema/aop
8 http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
9 ">
10
11 <!-- JNDI·½Ê½ÅäÖÃÊý¾ÝÔ´ -->
12 <!--
13 <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
14 <property name="jndiName" value="${jndiName}"></property>
15 </bean>
16 -->
17
18 <!-- ÅäÖÃÊý¾ÝÔ´ -->
19 <bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
20 <property name="url" value="${jdbc_url}" />
21 <property name="username" value="${jdbc_username}" />
22 <property name="password" value="${jdbc_password}" />
23
24 <!-- ³õʼ»¯Á¬½Ó´óС -->
25 <property name="initialSize" value="0" />
26 <!-- Á¬½Ó³Ø×î´óʹÓÃÁ¬½ÓÊýÁ¿ -->
27 <property name="maxActive" value="20" />
28 <!-- Á¬½Ó³Ø×î´ó¿ÕÏÐ -->
29 <property name="maxIdle" value="20" />
30 <!-- Á¬½Ó³Ø×îС¿ÕÏÐ -->
31 <property name="minIdle" value="0" />
32 <!-- »ñÈ¡Á¬½Ó×î´óµÈ´ýʱ¼ä -->
33 <property name="maxWait" value="60000" />
34
35 <!-- <property name="poolPreparedStatements" value="true" /> <property name="maxPoolPreparedStatementPerConnectionSize" value="33" /> -->
36
37 <property name="validationQuery" value="${validationQuery}" />
38 <property name="testOnBorrow" value="false" />
39 <property name="testOnReturn" value="false" />
40 <property name="testWhileIdle" value="true" />
41
42 <!-- ÅäÖüä¸ô¶à¾Ã²Å½øÐÐÒ»´Î¼ì²â£¬¼ì²âÐèÒª¹Ø±ÕµÄ¿ÕÏÐÁ¬½Ó£¬µ¥Î»ÊǺÁÃë -->
43 <property name="timeBetweenEvictionRunsMillis" value="60000" />
44 <!-- ÅäÖÃÒ»¸öÁ¬½ÓÔÚ³ØÖÐ×îСÉú´æµÄʱ¼ä£¬µ¥Î»ÊǺÁÃë -->
45 <property name="minEvictableIdleTimeMillis" value="25200000" />
46
47 <!-- ´ò¿ªremoveAbandoned¹¦ÄÜ -->
48 <property name="removeAbandoned" value="true" />
49 <!-- 1800Ã룬Ҳ¾ÍÊÇ30·ÖÖÓ -->
50 <property name="removeAbandonedTimeout" value="1800" />
51 <!-- ¹Ø±ÕabandedÁ¬½ÓʱÊä³ö´íÎóÈÕÖ¾ -->
52 <property name="logAbandoned" value="true" />
53
54 <!-- ¼à¿ØÊý¾Ý¿â -->
55 <!-- <property name="filters" value="stat" /> -->
56 <property name="filters" value="mergeStat" />
57 </bean>
58
59 <!-- ÅäÖÃhibernate session¹¤³§ -->
60 <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
61 <property name="dataSource" ref="dataSource" />
62 <property name="hibernateProperties">
63 <props>
64 <!-- webÏîÄ¿Æô¶¯Ê±ÊÇ·ñ¸üбí½á¹¹ -->
65 <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
66 <!-- ϵͳʹÓõÄÊý¾Ý¿â·½ÑÔ£¬Ò²¾ÍÊÇʹÓõÄÊý¾Ý¿âÀàÐÍ -->
67 <prop key="hibernate.dialect">${hibernate.dialect}</prop>
68 <!-- ÊÇ·ñ´òÓ¡HibernateÉú³ÉµÄSQLµ½¿ØÖÆÌ¨ -->
69 <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
70 <!-- ÊÇ·ñ¸ñʽ»¯´òÓ¡³öÀ´µÄSQL -->
71 <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
72 </props>
73 </property>
74
75 <!-- ×Ô¶¯É¨Ãè×¢½â·½Ê½ÅäÖõÄhibernateÀàÎļþ -->
76 <property name="packagesToScan">
77 <list>
78 <value>me.gacl.model</value>
79 </list>
80 </property>
81
82 <!-- ×Ô¶¯É¨Ãèhbm·½Ê½ÅäÖõÄhibernateÎļþºÍ.hbmÎļþ -->
83 <!--
84 <property name="mappingDirectoryLocations">
85 <list>
86 <value>classpath:me/gacl/model/hbm</value>
87 </list>
88 </property>
89 -->
90 </bean>
91
92 <!-- ÅäÖÃÊÂÎñ¹ÜÀíÆ÷ -->
93 <bean name="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
94 <property name="sessionFactory" ref="sessionFactory"></property>
95 </bean>
96
97 <!-- ×¢½â·½Ê½ÅäÖÃÊÂÎï -->
98 <!-- <tx:annotation-driven transaction-manager="transactionManager" /> -->
99
100 <!-- À¹½ØÆ÷·½Ê½ÅäÖÃÊÂÎï -->
101 <tx:advice id="transactionAdvice" transaction-manager="transactionManager">
102 <tx:attributes>
103 <!-- ÒÔÈçϹؼü×Ö¿ªÍ·µÄ·½·¨Ê¹ÓÃÊÂÎï -->
104 <tx:method name="add*" />
105 <tx:method name="save*" />
106 <tx:method name="update*" />
107 <tx:method name="modify*" />
108 <tx:method name="edit*" />
109 <tx:method name="delete*" />
110 <tx:method name="remove*" />
111 <tx:method name="repair" />
112 <tx:method name="deleteAndRepair" />
113 <!-- ÒÔÈçϹؼü×Ö¿ªÍ·µÄ·½·¨²»Ê¹ÓÃÊÂÎï -->
114 <tx:method name="get*" propagation="SUPPORTS" />
115 <tx:method name="find*" propagation="SUPPORTS" />
116 <tx:method name="load*" propagation="SUPPORTS" />
117 <tx:method name="search*" propagation="SUPPORTS" />
118 <tx:method name="datagrid*" propagation="SUPPORTS" />
119 <!-- ÆäËû·½·¨²»Ê¹ÓÃÊÂÎï -->
120 <tx:method name="*" propagation="SUPPORTS" />
121 </tx:attributes>
122 </tx:advice>
123 <!-- ÇÐÃæ£¬½«ÊÂÎïÓÃÔÚÄÄЩ¶ÔÏóÉÏ -->
124 <aop:config>
125 <aop:pointcut id="transactionPointcut" expression="execution(* me.gacl.service..*Impl.*(..))" />
126 <aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" />
127 </aop:config>
128
129 </beans>

4.7¡¢±àдµ¥Ôª²âÊÔ´úÂë

1¡¢ÔÚMySQLÖд´½¨ssheÊý¾Ý¿â

SQL½Å±¾£º

CREATE DATABASE SSHE;

2¡¢ÔÚsrc/main/javaÖд´½¨me.gac.model°ü£¬ÔÚ°üÖбàдһ¸ö UserÀ࣬ÈçÏÂͼËùʾ£º

´úÂëÈçÏ£º

package me.gacl.model;
2
3 import java.util.Date;
4
5 import javax.persistence.Column;
6 import javax.persistence.Entity;
7 import javax.persistence.Id;
8 import javax.persistence.Table;
9 import javax.persistence.Temporal;
10 import javax.persistence.TemporalType;
11
12 @Entity
13 @Table(name = "T_USER", schema = "SSHE")
14 public class User implements java.io.Serializable {
15
16 // Fields
17 private String id;
18 private String name;
19 private String pwd;
20 private Date createdatetime;
21 private Date modifydatetime;
22
23 // Constructors
24
25 /** default constructor */
26 public User() {
27 }
28
29 /** minimal constructor */
30 public User(String id, String name, String pwd) {
31 this.id = id;
32 this.name = name;
33 this.pwd = pwd;
34 }
35
36 /** full constructor */
37 public User(String id, String name, String pwd, Date createdatetime, Date modifydatetime) {
38 this.id = id;
39 this.name = name;
40 this.pwd = pwd;
41 this.createdatetime = createdatetime;
42 this.modifydatetime = modifydatetime;
43 }
44
45 // Property accessors
46 @Id
47 @Column(name = "ID", unique = true, nullable = false, length = 36)
48 public String getId() {
49 return this.id;
50 }
51
52 public void setId(String id) {
53 this.id = id;
54 }
55
56 @Column(name = "NAME",nullable = false, length = 100)
57 public String getName() {
58 return this.name;
59 }
60
61 public void setName(String name) {
62 this.name = name;
63 }
64
65 @Column(name = "PWD", nullable = false, length = 32)
66 public String getPwd() {
67 return this.pwd;
68 }
69
70 public void setPwd(String pwd) {
71 this.pwd = pwd;
72 }
73
74 @Temporal(TemporalType.TIMESTAMP)
75 @Column(name = "CREATEDATETIME", length = 7)
76 public Date getCreatedatetime() {
77 return this.createdatetime;
78 }
79
80 public void setCreatedatetime(Date createdatetime) {
81 this.createdatetime = createdatetime;
82 }
83
84 @Temporal(TemporalType.TIMESTAMP)
85 @Column(name = "MODIFYDATETIME", length = 7)
86 public Date getModifydatetime() {
87 return this.modifydatetime;
88 }
89
90 public void setModifydatetime(Date modifydatetime) {
91 this.modifydatetime = modifydatetime;
92 }
93 }

3¡¢ÔÚsrc/main/javaÖд´½¨me.gacl.dao°ü£¬ÔÚ°üÖбàдһ¸ö UserDaoI½Ó¿Ú£¬ÈçÏÂͼËùʾ£º

´úÂëÈçÏ£º

package me.gacl.dao;
2
3 import java.io.Serializable;
4
5 import me.gacl.model.User;
6
7 public interface UserDaoI {
8
9 /**
10 * ±£´æÓû§
11 * @param user
12 * @return
13 */
14 Serializable save(User user);
15 }

ÔÚsrc/main/javaÖд´½¨me.gacl.dao.impl°ü£¬ÔÚ°üÖбàд UserDaoImplʵÏÖÀ࣬ÈçÏÂͼËùʾ£º

´úÂëÈçÏ£º

 package me.gacl.dao.impl;
2
3 import java.io.Serializable;
4
5 import org.hibernate.SessionFactory;
6 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.stereotype.Repository;
8
9 import me.gacl.dao.UserDaoI;
10 import me.gacl.model.User;
11
12 @Repository("userDao")
13 public class UserDaoImpl implements UserDaoI {
14
15 /**
16 * ʹÓÃ@Autowired×¢½â½«sessionFactory×¢Èëµ½UserDaoImplÖÐ
17 */
18 @Autowired
19 private SessionFactory sessionFactory;
20
21 @Override
22 public Serializable save(User user) {
23 return sessionFactory.getCurrentSession().save(user);
24 }
25 }

ÕâÀïʹÓÃ@Repository("userDao")×¢½âÍê³Édao×¢È룬 ʹÓÃ@Autowired×¢½â½«sessionFactory×¢Èëµ½UserDaoImplÖС£

4¡¢ÔÚ֮ǰ´´½¨ºÃµÄUserServiceI½Ó¿ÚÖÐÌí¼ÓÒ»¸ösave·½·¨µÄ¶¨Ò壬ÈçÏ£º

 package me.gacl.service;
2
3 import java.io.Serializable;
4 import me.gacl.model.User;
5
6 /**
7 * ²âÊÔ
8 * @author gacl
9 *
10 */
11 public interface UserServiceI {
12
13 /**
14 * ²âÊÔ·½·¨
15 */
16 void test();
17
18 /**
19 * ±£´æÓû§
20 * @param user
21 * @return
22 */
23 Serializable save(User user);
24 }

5¡¢ÔÚUserServiceImplÀàÖÐʵÏÖsave·½·¨£¬ÈçÏ£º

package me.gacl.service.impl;
2
3 import java.io.Serializable;
4
5 import org.springframework.beans.factory.annotation.Autowired;
6 import org.springframework.stereotype.Service;
7
8 import me.gacl.dao.UserDaoI;
9 import me.gacl.model.User;
10 import me.gacl.service.UserServiceI;
11 //ʹÓÃSpringÌṩµÄ@Service×¢½â½«UserServiceImpl±êעΪһ¸öService
12 @Service("userService")
13 public class UserServiceImpl implements UserServiceI {
14
15 /**
16 * ×¢ÈëuserDao
17 */
18 @Autowired
19 private UserDaoI userDao;
20
21 @Override
22 public void test() {
23 System.out.println("Hello World!");
24 }
25
26 @Override
27 public Serializable save(User user) {
28 return userDao.save(user);
29 }
30 }

6¡¢ÔÚsrc/main/testϵÄme.gacl.test°üÖбàд TestHibernateÀ࣬´úÂëÈçÏ£º

package me.gacl.test;
2
3 import java.util.Date;
4 import java.util.UUID;
5
6 import me.gacl.model.User;
7 import me.gacl.service.UserServiceI;
8
9 import org.junit.Before;
10 import org.junit.Test;
11 import org.springframework.context.ApplicationContext;
12 import org.springframework.context.support.ClassPathXmlApplicationContext;
13
14 public class TestHibernate {
15
16 private UserServiceI userService;
17
18 /**
19 * Õâ¸öbefore·½·¨ÔÚËùÓеIJâÊÔ·½·¨Ö®Ç°Ö´ÐУ¬²¢ÇÒÖ»Ö´ÐÐÒ»´Î
20 * ËùÓÐ×öJunitµ¥Ôª²âÊÔʱһЩ³õʼ»¯¹¤×÷¿ÉÒÔÔÚÕâ¸ö·½·¨ÀïÃæ½øÐÐ
21 * ±ÈÈçÔÚbefore·½·¨ÀïÃæ³õʼ»¯ApplicationContextºÍuserService
22 */
23 @Before
24 public void before(){
25 ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"spring.xml","spring-hibernate.xml"});
26 userService = (UserServiceI) ac.getBean("userService");
27 }
28
29 @Test
30 public void testSaveMethod(){
31 //ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"spring.xml","spring-hibernate.xml"});
32 //UserServiceI userService = (UserServiceI) ac.getBean("userService");
33 User user = new User();
34 user.setId(UUID.randomUUID().toString().replaceAll("-", ""));
35 user.setName("¹Â°Á²ÔÀÇ");
36 user.setPwd("123");
37 user.setCreatedatetime(new Date());
38 userService.save(user);
39 }
40 }

Ö´ÐÐJunitµ¥Ôª²âÊÔ£¬ÈçÏÂËùʾ£º

²âÊÔͨ¹ý£¬ÔÙ¿´¿´ssheÊý¾Ý¿â£¬ÈçÏÂͼËùʾ£º

HibernateÔÚÖ´Ðйý³ÌÖУ¬ÏȰïÎÒÃÇÔÚssheÊý¾Ý¿âÖд´½¨Ò»ÕÅt_user±í£¬t_userµÄ±í½á¹¹¸ù¾ÝUserʵÌåÀàÖеÄÊôÐÔ¶¨ÒåÀ´´´½¨µÄ£¬È»ºóÔÙ½«Êý¾Ý²åÈëµ½t_user±íÖУ¬ÈçÏÂͼËùʾ£º

µ½´Ë£¬Hibernate4¿ª·¢»·¾³µÄ´î½¨²¢ÇÒÓëSpringÕûºÏµÄ¹¤×÷ËãÊÇÈ«²¿Íê³É²¢ÇÒ²âÊÔͨ¹ýÁË¡£

Îå¡¢Èý´ó¿ò¼Ü×ۺϲâÊÔ

¾­¹ýÇ°ÃæµÄËÄ´ó²½Ö裬ÎÒÃÇÒѾ­³É¹¦µØ´î½¨ºÃ»ùÓÚstruts2+hibernate4+spring3ÕâÈý´ó¿ò¼ÜµÄÕûºÏ¿ª·¢»·¾³£¬ÏÂÃæÎÒÃÇÀ´×ۺϲâÊÔÒ»ÏÂÈý´ó¿ò¼ÜÅäºÏʹÓýøÐпª·¢µÄЧ¹û¡£

5.1¡¢ÍêÉÆweb.xmlÎļþÖеÄÅäÖÃ

<?xml version="1.0" encoding="UTF-8"?>
2 <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
5 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
6 <display-name></display-name>
7 <welcome-file-list>
8 <welcome-file>index.jsp</welcome-file>
9 </welcome-file-list>
10
11 <!-- Spring¼àÌýÆ÷ -->
12 <listener>
13 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
14 </listener>
15 <!-- SpringÅäÖÃÎļþλÖà -->
16 <context-param>
17 <param-name>contextConfigLocation</param-name>
18 <param-value>classpath:spring.xml,classpath:spring-hibernate.xml</param-value>
19 </context-param>
20
21 <!-- ·ÀÖ¹springÄÚ´æÒç³ö¼àÌýÆ÷ -->
22 <listener>
23 <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
24 </listener>
25
26 <!-- openSessionInViewÅäÖÃ -->
27 <filter>
28 <filter-name>openSessionInViewFilter</filter-name>
29 <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
30 <init-param>
31 <param-name>singleSession</param-name>
32 <param-value>true</param-value>
33 </init-param>
34 </filter>
35 <filter-mapping>
36 <filter-name>openSessionInViewFilter</filter-name>
37 <url-pattern>*.action</url-pattern>
38 </filter-mapping>
39
40 <!-- Struts2µÄºËÐĹýÂËÆ÷ÅäÖà -->
41 <filter>
42 <filter-name>struts2</filter-name>
43 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
44 </filter>
45 <!-- Struts2¹ýÂËÆ÷À¹½ØËùÓеÄ.actionÇëÇó -->
46 <filter-mapping>
47 <filter-name>struts2</filter-name>
48 <url-pattern>*.action</url-pattern>
49 </filter-mapping>
50
51 <!-- druid¼à¿ØÒ³Ã棬ʹÓÃ${pageContext.request.contextPath}/druid/index.html·ÃÎÊ -->
52 <servlet>
53 <servlet-name>druidStatView</servlet-name>
54 <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
55 </servlet>
56 <servlet-mapping>
57 <servlet-name>druidStatView</servlet-name>
58 <url-pattern>/druid/*</url-pattern>
59 </servlet-mapping>
60 </web-app>

5.2¡¢±àд²âÊÔ´úÂë

ÔÚTestActionÀàÖÐÌí¼ÓÒ»¸ösaveUser·½·¨£¬ÈçÏ£º

 package me.gacl.action;
2
3 import java.util.Date;
4 import java.util.UUID;
5
6 import me.gacl.model.User;
7 import me.gacl.service.UserServiceI;
8
9 import org.apache.struts2.convention.annotation.Action;
10 import org.apache.struts2.convention.annotation.Namespace;
11 import org.apache.struts2.convention.annotation.ParentPackage;
12 import org.springframework.beans.factory.annotation.Autowired;
13
14 @ParentPackage("basePackage")
15 @Action(value="strust2Test") //ʹÓÃconvention-plugin²å¼þÌṩµÄ @Action×¢½â½«Ò»¸öÆÕͨjavaÀà±êעΪһ¸ö¿ÉÒÔ´¦ÀíÓû§ÇëÇóµÄAction
16 @Namespace("/") //ʹÓÃconvention-plugin²å¼þÌṩµÄ@Namespace×¢½âΪÕâ¸öActionÖ¸¶¨Ò»¸öÃüÃû¿Õ¼ä
17 public class TestAction {
18
19 /**
20 * ×¢ÈëuserService
21 */
22 @Autowired
23 private UserServiceI userService;
24
25 /**
26 * http://localhost:8080/SSHE/strust2Test!test.action
27 * MethodName: test
28 * Description:
29 * @author xudp
30 */
31 public void test(){
32 System.out.println("½øÈëTestAction");
33 userService.test();
34 }
35
36 /**
37 * http://localhost:8080/SSHE/strust2Test!saveUser.action
38 */
39 public void saveUser(){
40 User user = new User();
41 user.setId(UUID.randomUUID().toString().replaceAll("-", ""));
42 user.setName("xdp¹Â°Á²ÔÀÇ");
43 user.setPwd("123456");
44 user.setCreatedatetime(new Date());
45 userService.save(user);
46 }
47 }

Ö´ÐС¾Maven install¡¿²Ù×÷£¬ÖØÐ±àÒëºÍ·¢²¼ÏîÄ¿£¬ÔÚÖ´ÐС¾Maven install¡¿²Ù×÷֮ǰ£¬ÐèÒªÐÞ¸ÄTestSpringÕâ¸ö²âÊÔÀàÖеÄtest·½·¨µÄ´úÂ룬ÈçÏ£º

package me.gacl.test;
2
3 import me.gacl.service.UserServiceI;
4
5 import org.junit.Test;
6 import org.springframework.context.ApplicationContext;
7 import org.springframework.context.support.ClassPathXmlApplicationContext;
8
9 public class TestSpring {
10
11 @Test
12 public void test(){
13 //ͨ¹ýspring.xmlÅäÖÃÎļþ´´½¨SpringµÄÓ¦ÓóÌÐòÉÏÏÂÎÄ»·¾³
14 //ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:spring.xml");
15 /**
16 *ÒòΪÒѾ­ÕûºÏÁËHibernate£¬UserServiceImplÀàÖÐʹÓõ½ÁËuserDao£¬
17 *userDaoÊÇÓÉspring´´½¨²¢ÇÒ×¢Èë¸øUserServiceImplÀàµÄ£¬ ¶øuserDaoÖÐÓÖʹÓõ½ÁËsessionFactory¶ÔÏó
18 *¶ø´´½¨sessionFactory¶ÔÏóʱÐèҪʹÓõ½spring-hibernate.xmlÕâ¸öÅäÖÃÎļþÖеÄÅäÖÃÏîÐÅÏ¢£¬
19 *ËùÒÔ´´½¨SpringµÄÓ¦ÓóÌÐòÉÏÏÂÎÄ»·¾³Ê±£¬ ÐèҪͬʱʹÓÃspring.xmlºÍspring-hibernate.xmlÕâÁ½¸öÅäÖÃÎļþ
20 *·ñÔòÔÚÖ´ÐÐMaven installÃüÁîʱ£¬ÒòΪmaven»áÏÈÖ´ÐÐtest·½·¨ÖеĴúÂ룬¶ø´úÂëÖ´Ðе½
21 *UserServiceI userService = (UserServiceI) ac.getBean("userService");
22 *ÕâÒ»ÐÐʱ¾Í»áÒòΪuserDaoÖÐʹÓõ½sessionFactory¶ÔÏóÎÞ·¨Õý³£´´½¨µÄ¶ø³ö´í£¬ ÕâÑùÖ´ÐÐMaven installÃüÁî±àÒëÏîĿʱ¾Í»áʧ°Ü£¡
23 *
24 */
25 ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"spring.xml","spring-hibernate.xml"});
26 //´ÓSpringµÄIOCÈÝÆ÷ÖлñÈ¡bean¶ÔÏó
27 UserServiceI userService = (UserServiceI) ac.getBean("userService");
28 //Ö´ÐвâÊÔ·½·¨
29 userService.test();
30 }
31 }

ÿ´ÎÖ´ÐС¾Maven install¡¿ÃüÁîʱ¶¼»áÖ´ÐÐJunitµ¥Ôª²âÊÔÖеĴúÂëÓÐʱºò¸Ð¾õͦÀÛ׸µÄ£¬ÓÐʱºòÍùÍù¾ÍÊÇÒòΪһЩµ¥Ôª²âÊÔÖеĴúÂëµ¼Ö¡¾Maven install¡¿ÃüÁî±àÒëÏîĿʧ°Ü£¡

½«±àÒëºÃµÄÏîÄ¿²¿Êðµ½tomcat·þÎñÆ÷ÖÐÔËÐУ¬ÊäÈëµØÖ·£ºhttp://localhost:8080/SSHE/strust2Test!saveUser.action½øÐзÃÎÊ£¬ÈçÏÂËùʾ£º

·ÃÎÊactionµÄ¹ý³ÌÖÐûÓгöÏÖ´íÎ󣬲¢ÇÒºǫ́ҲûÓб¨´í²¢ÇÒ´òÓ¡³öÁËHibernateÖ´ÐвåÈë²Ù×÷ʱµÄSQLÓï¾ä£¬ÈçÏÂËùʾ£º

Õâ˵Ã÷Èý´ó¿ò¼ÜÕûºÏ¿ª·¢µÄ²âÊÔͨ¹ýÁË¡£ÒÔÉϾÍÊÇʹÓÃʹÓÃMaven´î½¨Struts2+Spring3+Hibernate4µÄÕûºÏ¿ª·¢»·¾³µÄÈ«²¿ÄÚÈÝ¡£

   
4277 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

ΪʲôҪ×ö³ÖÐø²¿Êð£¿
ÆÊÎö¡°³ÖÐø½»¸¶¡±£ºÎå¸öºËÐÄʵ¼ù
¼¯³ÉÓë¹¹½¨Ö¸ÄÏ
³ÖÐø¼¯³É¹¤¾ßµÄÑ¡Ôñ-×°ÔØ
Ïà¹ØÎĵµ

³ÖÐø¼¯³É½éÉÜ
ʹÓÃHudson³ÖÐø¼¯³É
³ÖÐø¼¯³ÉÖ®-ÒÀÀµ¹ÜÀí
IPD¼¯³É²úÆ·¿ª·¢¹ÜÀí
Ïà¹Ø¿Î³Ì

ÅäÖùÜÀí¡¢ÈÕ¹¹½¨Óë³ÖÐø¼¯³É
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
»ùÓÚAndroidµÄµ¥Ôª¡¢ÐÔÄܲâÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

¼¯³ÉÓë¹¹½¨Ö¸ÄÏ
ÏîÄ¿¹ÜÀí:MavenÈÃÊÂÇé±äµÃ¼òµ¥
³ÖÐø¼¯³É¹¤¾ßhudson
³ÖÐø¼¯³É
MavenȨÍþÖ¸ÄÏ
³ÌÐò¼¯(UMLÖеİü)Ö®¼äÑ­»·


²úÆ··¢²¼¹ÜÀí
ÅäÖùÜÀí·½·¨¡¢Êµ¼ù¡¢¹¤¾ß
¶à²ã´Î¼¯³ÉÅäÖùÜÀí
ʹÓÃCCÓëCQ½øÐÐÏîĿʵ¼ù
CVSÓëÅäÖùÜÀí
Subversion¹ÜÀíÔ±


º£º½¹É·Ý ÖØ¹¹¼°³ÖÐø¼¯³É
µçÑлªÔ´ Éè¼ÆÔ­Àí¡¢½¨Ä£ÓëÖØ¹¹
Èí¼þÅäÖùÜÀíÈÕ¹¹½¨¼°³ÖÐø¼¯³É
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
ÖйúÈí¼þÑз¢ÖÐÐÄ µ¥Ôª²âÊÔÓëÖØ¹¹
µ¥Ôª²âÊÔ¡¢Öع¹ºÍ³ÖÐø¼¯³Éʵ¼ù
ÂÞ¿ËΤ¶û C++µ¥Ôª²âÊÔ+ÖØ¹¹+Gtest