1. Integrated jar package
Spring2.5 + hibernate3.3 + struts1.3 Integrated Development
Under the hibernate core installation package:
Hibernate3.jar
Lib \ required \ *. Jar
Lib \ optional \ ehcache-1.2.3.jar
The
Lib \ test \ slf4j-log4j12.jar
Under the spring installation package
Dist \ spring. Jar
Dist \ modules \ spring-webmvc-struts.jar
Lib \ Jakarta-commons \ commons-logging.jar, commons-dbcp.jar, commons-pool.jar
Lib \ aspectj \ aspectjweaver. jar, aspectjrt. Jar
Lib \ cglib \ cglib-nodep-2.1_3.jar
Lib \ J2EE \ common-annotations.jar
Lib \ log4j \ log4j-1.2.15.jar
Struts
Download struts-1.3.8-lib.zip, you need to use all the jar files under the decompressed directory, it is recommended to replace the jstl-1.0.2.jar and standard-1.0.2.jar with version 1.1. A antlr-2.7.6.jar already exists in spring, so remove the antlr-2.7.2.jar in struts to avoid jar conflicts.
Database driver jar
Integrate spring and hibernate first, and then integrate Struts after testing.
2. Create a project
Configure the XML file of spring, manage sessionfactory by spring, and configure spring to manage transactions of hiberante:
<? XML version = "1.0" encoding = "UTF-8"?> <Beansxmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns: context = "http://www.springframework.org/schema/context" xmlns: AOP = "http://www.springframework.org/schema/aop" xmlns: Tx = "http://www.springframework.org/schema/tx" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5. Xsdhttp: // your http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd "> <! -- Configure the data source --> <bean id = "datasource" class = "org. apache. commons. DBCP. basicdatasource "Destroy-method =" close "> <property name =" driverclassname "value =" com. mySQL. JDBC. driver "/> <property name =" url "value =" JDBC: mysql: // localhost: 3306/test? Useunicode = true & amp; characterencoding = UTF-8 "/> <property name =" username "value =" root "/> <property name =" password "value =" "/> <! -- Initial value when the connection pool starts --> <property name = "initialsize" value = "1"/> <! -- Maximum value of the connection pool --> <property name = "maxactive" value = "500"/> <! -- Maximum idle value. after a peak time, the connection pool can slowly release a portion of connections that are no longer in use, until maxidle --> <property name = "maxidle" value = "2"/> <! -- Minimum idle value. when the number of idle connections is less than the threshold value, the connection pool will pre-apply for some connections, so that you do not have time to apply when the peak traffic arrives --> <property name = "minidle" value = "1"/> </bean> <! -- Configure sessionfactory of hibernate --> <bean id = "sessionfactory" class = "org. springframework. orm. hibernate3.localsessionfactorybean "> <property name =" datasource "> <ref bean =" datasource "/> </property> <property name =" mappingresources "> <list> <value> COM/ persia/model/person. HBM. XML </value> </List> </property> <property name = "hibernateproperties"> <value> hibernate. dialect = org. hibernate. dialect. mysql5dialect H Ib.pdf. hbm2ddl. auto = Update hibernate. show_ SQL = false hibernate. format_ SQL = false hibernate. cache. use_second_level_cache = true hibernate. cache. use_query_cache = false hibernate. cache. provider_class = org. hibernate. cache. ehcacheprovider </value> </property> </bean> <! -- Configure the spring Transaction Manager for hibernate --> <bean id = "txmanager" class = "org. springframework. orm. hibernate3.hibernatetransactionmanager "> <property name =" sessionfactory "ref =" sessionfactory "/> </bean> <! -- Configure transactions using annotations --> <TX: annotation-driven transaction-Manager = "txmanager"/> <! -- Inject bean using the annotation method configured manually --> <context: annotation-config> </Context: annotation-config> <! -- Define the business bean to be injected --> <bean id = "personservice" class = "com. Persia. Service. impl. personserviceimpl"> </bean> </beans>
The Hibernate configuration file of person is as follows:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">3. Compile the business Bean:
Import Java. util. list; import javax. annotation. resource; import Org. hibernate. sessionfactory; import Org. springframework. transaction. annotation. propagation; import Org. springframework. transaction. annotation. transactional; import COM. persia. model. person; import COM. persia. service. ipersonservice; @ transactionalpublic class personserviceimpl implements ipersonservice {@ resourceprivate sessionfactory sessionf Acloud; Public void save (person) {// get the session managed by the spring container. Open the transaction before the method is executed and close the transaction at the end. Sessionfactory. getcurrentsession (). persist (person);} public void Update (person) {// used to synchronize a free update to the database sessionfactory. getcurrentsession (). merge (person);} public void Delete (integer ID) {sessionfactory. getcurrentsession (). delete (// No need to load data, high efficiency sessionfactory. getcurrentsession (). load (person. class, ID) ;}@ transactional (propagation = propagation. not_supported, readonly = true) public person getperson (integer ID) {return (person) sessionfactory. getcurrentsession (). get (person. class, ID) ;}@ suppresswarnings ("unchecked") @ transactional (propagation = propagation. not_supported, readonly = true) public list <person> getpersons () {return sessionfactory. getcurrentsession (). createquery ("from person "). list ();}}
Configure transactions with annotations and configure spring dependency injection with annotations.
No transaction is required for the read operation configuration and the configuration level is read-only.
4. Perform JUnit testing on the service Bean:
package junit.test;import static org.junit.Assert.*;import java.util.List;import org.junit.BeforeClass;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.persia.model.Person;import com.persia.service.IPersonService;public class IPersonServiceTest {private static IPersonService ps;@BeforeClasspublic static void setUpBeforeClass() throws Exception { try {ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); ps=(IPersonService) ctx.getBean("personService"); } catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace(); }}//@Testpublic void testSave() {ps.save(new Person("hello"));}//@Testpublic void testUpdate() {Person p=ps.getPerson(5);p.setName("linda");ps.update(p);}//@Testpublic void testGetPerson() {System.out.println(ps.getPerson(5).getName());}@Testpublic void testDelete() {ps.delete(5);}//@Testpublic void testGetPersons() {List<Person> ls=ps.getPersons();for(Person p:ls){System.out.println(p.getName());}}}
So far, the integration of spring and hiberante has been completed.