`
高级java工程师
  • 浏览: 410816 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

s2sh整合<一>

    博客分类:
  • s2sh
阅读更多
Struts 2,Spring 2,Hibernate 整合
开发工具Eclipse 6.5/6.6 GA
1.首先创建一个web工程,我们暂且启明为s2sh
这里我们选择的是Java EE 5.0




finish
2.向工程加入hibernate支持,这里我们使用的是hibernate 3.2



默认就可以,不要忘记将jar包加入到/WebRoot/WEB-INF/lib



接着next



实际上这里的hibernate.cfg.xml不起作用,因为该配置文件的内容由后面的spring配置文件进行管理,我们可以在创建之后将其删除
默认next



我们根本不用hibernate.cfg.xml,所以这里根本不需要进行数据库配置,当然默认也无所谓。
继续next



sessionFactory我们在之后也会直接使用spring为我们提供的,所以这里不需要创建。
finish
3.向工程加入spring支持,这里我们使用的是spring2



这里我们选择的是spring2,



不要忘记选中这5个库包:
Spring 2.0 AOP Libraries
Spring 2.0 Core Libraries
Spring 2.0 Persistence Core Libraries
Spring 2.0 Persistence JDBC Libraries
Spring 2.0 Web Libraries
也不要忘记将jar包加入到/WebRoot/WEB-INF/lib。
next



这里我们不需要Enable AOP 所以不需要选中
不要忘记将配置文件applicationContext.xml指定在/WEB-INF目录下,不然服务器启动时无法加载
next



这里的sessionFactory我们也不需要,之后会手动配置。
finish
4.加入struts2支持,由于MyEclipse并没有加入Struts2的支持,所以我们需要手动导入相关jar包。
这里我们使用的是struts 2.0.11版本
需要的相关jar包如下:
freemarker-2.3.8.jar
ognl-2.6.11.jar
struts2-core-2.0.11.jar
xwork-2.0.4.jar
struts2-spring-plugin-2.0.11.jar

4.进行相关文件的配置
首先我们需要在src下加入struts的配置文件struts.xml

Xml代码 
1.<?xml version="1.0" encoding="UTF-8" ?> 
2.<!DOCTYPE struts PUBLIC  
3.    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
4.    "http://struts.apache.org/dtds/struts-2.0.dtd">  
5.<struts>  
6.    <package name="s2sh" extends="struts-default">  
7.    </package>  
8.</struts>  
Xml代码
1.<?xml version="1.0" encoding="UTF-8" ?> 
2.<!DOCTYPE struts PUBLIC  
3.    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
4.    "http://struts.apache.org/dtds/struts-2.0.dtd"> 
5.<struts> 
6.    <package name="<SPAN class=hilite1>s2sh</SPAN>" extends="struts-default"> 
7.    </package> 
8.</struts> 
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="s2sh" extends="struts-default">
</package>
</struts>



接下来我们配置web.xml

Xml代码 
1.<?xml version="1.0" encoding="UTF-8"?>  
2.<web-app version="2.5"     
3.    xmlns="http://java.sun.com/xml/ns/javaee"     
4.    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     
5.    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee     
6.    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">   
7.<!-- 配置struts2的过滤器 -->   
8.<filter>   
9.    <filter-name>struts2</filter-name>   
10.    <filter-class>   
11.        org.apache.struts2.dispatcher.FilterDispatcher   
12.    </filter-class>   
13.</filter>   
14.  
15.<filter-mapping>   
16.    <filter-name>struts2</filter-name>   
17.    <url-pattern>/*</url-pattern>   
18.</filter-mapping>   
19.  
20.<!-- 配置spring的监听器 -->   
21.<listener>   
22.    <listener-class>   
23.        org.springframework.web.context.ContextLoaderListener   
24.    </listener-class>   
25.</listener>   
26.  
27.  <welcome-file-list>   
28.    <welcome-file>index.jsp</welcome-file>   
29.  </welcome-file-list>   
30.  
31.</web-app>   
Xml代码 
1.<?xml version="1.0" encoding="UTF-8"?>  
2.<web-app version="2.5"    
3.    xmlns="http://java.sun.com/xml/ns/javaee"    
4.    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
5.    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee    
6.    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
7.<!-- 配置struts2的过滤器 -->  
8.<filter>  
9.    <filter-name>struts2</filter-name>  
10.    <filter-class>  
11.        org.apache.struts2.dispatcher.FilterDispatcher   
12.    </filter-class>  
13.</filter>  
14.  
15.<filter-mapping>  
16.    <filter-name>struts2</filter-name>  
17.    <url-pattern>/*</url-pattern>  
18.</filter-mapping>  
19.  
20.<!-- 配置spring的监听器 -->  
21.<listener>  
22.    <listener-class>  
23.        org.springframework.web.context.ContextLoaderListener   
24.    </listener-class>  
25.</listener>  
26.  
27.  <welcome-file-list>  
28.    <welcome-file>index.jsp</welcome-file>  
29.  </welcome-file-list>  
30.  
31.</web-app>  
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- 配置struts2的过滤器 -->
<filter>
	<filter-name>struts2</filter-name>
	<filter-class>
		org.apache.struts2.dispatcher.FilterDispatcher
	</filter-class>
</filter>

<filter-mapping>
	<filter-name>struts2</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

<!-- 配置spring的监听器 -->
<listener>
	<listener-class>
		org.springframework.web.context.ContextLoaderListener
	</listener-class>
</listener>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

</web-app>



到目前为止我们的整合工作已经完成。我们可以将该工程打包,以备下次直接使用。
这里由一个问题就是如果采用myeclipse加载hibernate和spring的lib包形式发布项目的时候会出现异常,我们可以手动去掉一个asm-2.2.3jar即可。

5.下面我们做一个简单的应用来验证。
(1)首先我们使用的是mysql,不要忘记将mysql-jdbc的jar包导入到我们的工程中
我们创建s2sh数据库,并创建表person

Sql代码 

1.-- Table "person" DDL   
2.CREATE TABLE `person` (    
3.  `id` int(11) NOT NULL,    
4.  `name` varchar(20) NOT NULL,    
5.  `age` int(11) NOT NULL,    
6.  PRIMARY KEY  (`id`)    
7.) ENGINE=InnoDB DEFAULT CHARSET=utf8;   
Sql代码 
1.-- Table "person" DDL   
2.CREATE TABLE `person` (   
3.  `id` int(11) NOT NULL,   
4.  `name` varchar(20) NOT NULL,   
5.  `age` int(11) NOT NULL,   
6.  PRIMARY KEY  (`id`)   
7.) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
-- Table "person" DDL
CREATE TABLE `person` (
  `id` int(11) NOT NULL,
  `name` varchar(20) NOT NULL,
  `age` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



(2)首先我们创建test.s2sh.bean包,在下面创建我们person表对应的Entity Bean及其映射文件
Person.java

Java代码
.package test.s2sh.bean;   
2.  
3.public class Person {    
4.    private Integer id;    
5.    private String name;    
6.    private int age;    
7.    public Integer getId() {    
8.        return id;    
9.    }   
10.    public void setId(Integer id) {    
11.        this.id = id;    
12.    }   
13.    public String getName() {    
14.        return name;    
15.    }   
16.    public void setName(String name) {    
17.        this.name = name;    
18.    }   
19.    public int getAge() {    
20.        return age;    
21.    }   
22.    public void setAge(int age) {    
23.        this.age = age;    
24.    }   
25.}  



1Java代码
1.package test.<SPAN class=hilite1>s2sh</SPAN>.bean;   
2.  
3.public class Person {   
4.    private Integer id;   
5.    private String name;   
6.    private int age;   
7.    public Integer getId() {   
8.        return id;   
9.    }   
10.    public void setId(Integer id) {   
11.        this.id = id;   
12.    }   
13.    public String getName() {   
14.        return name;   
15.    }   
16.    public void setName(String name) {   
17.        this.name = name;   
18.    }   
19.    public int getAge() {   
20.        return age;   
21.    }   
22.    public void setAge(int age) {   
23.        this.age = age;   
24.    }   
25.}  

package test.s2sh.bean;

public class Person {
	private Integer id;
	private String name;
	private int age;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}



Person.hbm.xml

Xml代码 
1.<?xml version="1.0" encoding="utf-8"?>  
2.<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"   
3."http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">   
4.  
5.<hibernate-mapping>   
6.    <class name="test.s2sh.bean.Person" table="person">   
7.        <id name="id" type="java.lang.Integer" column="id">   
8.            <generator class="increment"></generator>   
9.        </id>   
10.        <property name="name" type="string" column="name"   
11.         length="20"></property>   
12.         <property name="age" type="java.lang.Integer" column="age"></property>   
13.    </class>   
14.</hibernate-mapping>  



Xml代码
1.<?xml version="1.0" encoding="utf-8"?>  
2.<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"   
3."http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
4.  
5.<hibernate-mapping>  
6.    <class name="test.<SPAN class=hilite1>s2sh</SPAN>.bean.Person" table="person">  
7.        <id name="id" type="java.lang.Integer" column="id">  
8.            <generator class="increment"></generator>  
9.        </id>  
10.        <property name="name" type="string" column="name"  
11.         length="20"></property>  
12.         <property name="age" type="java.lang.Integer" column="age"></property>  
13.    </class>  
14.</hibernate-mapping>  



<?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">

<hibernate-mapping>
	<class name="test.s2sh.bean.Person" table="person">
		<id name="id" type="java.lang.Integer" column="id">
			<generator class="increment"></generator>
		</id>
		<property name="name" type="string" column="name"
		 length="20"></property>
		 <property name="age" type="java.lang.Integer" column="age"></property>
	</class>
</hibernate-mapping>





(3)在spring配置文件applicationContext.xml配置hibernate的连接数据库信息及sessionFactory创建方式

Xml代码 


1.<?xml version="1.0" encoding="UTF-8"?>  
2.<beans   
3.    xmlns="http://www.springframework.org/schema/beans"   
4.    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
5.    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">   
6.<!-- apache.dbcp连接池的配置 -->   
7.<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">   
8.    <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>   
9.    <property name="url" value="jdbc:mysql://localhost:3306/s2sh?useUnicode=true&amp;characterEncoding=UTF-8"></property>   
10.    <property name="username" value="root"></property>   
11.    <property name="password" value=""></property>   
12.    <!-- 最大活动连接数 -->   
13.    <property name="maxActive" value="100"></property>   
14.    <!-- 最大可空闲连接数 -->   
15.    <property name="maxIdle" value="30"></property>   
16.    <!-- 最大可等待连接数 -->   
17.    <property name="maxWait" value="500"></property>   
18.    <!-- 默认的提交方式(如果不需要事务可以设置成true,在实际应用中一般设置为false,默认为false) -->   
19.    <property name="defaultAutoCommit" value="true"></property>   
20.</bean>   
21.<!-- 这里直接使用spring对hibernate3支持的sessionFactory -->   
22.<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">   
23.    <property name="dataSource" ref="dataSource"></property>   
24.    <!-- hibernate方言等相关配置 -->   
25.    <property name="hibernateProperties">   
26.        <props>   
27.            <prop key="connection.useUnicode">true</prop>   
28.            <prop key="connection.characterEncoding">utf-8</prop>   
29.            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>   
30.            <prop key="hibernate.show_sql">true</prop>   
31.        </props>   
32.    </property>   
33.    <!-- hbm.xml的映射文件 -->   
34.    <property name="mappingResources">   
35.        <list>   
36.            <value>test/s2sh/bean/Person.hbm.xml</value>   
37.        </list>   
38.    </property>   
39.</bean>   
40.  
41.</beans>  


Xml代码

1.<?xml version="1.0" encoding="UTF-8"?>  
2.<beans  
3.    xmlns="http://www.springframework.org/schema/beans"  
4.    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
5.    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">  
6.<!-- apache.dbcp连接池的配置 -->  
7.<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
8.    <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>  
9.    <property name="url" value="jdbc:mysql://localhost:3306/<SPAN class=hilite1>s2sh</SPAN>?useUnicode=true&amp;characterEncoding=UTF-8"></property>  
10.    <property name="username" value="root"></property>  
11.    <property name="password" value=""></property>  
12.    <!-- 最大活动连接数 -->  
13.    <property name="maxActive" value="100"></property>  
14.    <!-- 最大可空闲连接数 -->  
15.    <property name="maxIdle" value="30"></property>  
16.    <!-- 最大可等待连接数 -->  
17.    <property name="maxWait" value="500"></property>  
18.    <!-- 默认的提交方式(如果不需要事务可以设置成true,在实际应用中一般设置为false,默认为false) -->  
19.    <property name="defaultAutoCommit" value="true"></property>  
20.</bean>  
21.<!-- 这里直接使用spring对hibernate3支持的sessionFactory -->  
22.<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
23.    <property name="dataSource" ref="dataSource"></property>  
24.    <!-- hibernate方言等相关配置 -->  
25.    <property name="hibernateProperties">  
26.        <props>  
27.            <prop key="connection.useUnicode">true</prop>  
28.            <prop key="connection.characterEncoding">utf-8</prop>  
29.            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>  
30.            <prop key="hibernate.show_sql">true</prop>  
31.        </props>  
32.    </property>  
33.    <!-- hbm.xml的映射文件 -->  
34.    <property name="mappingResources">  
35.        <list>  
36.            <value>test/<SPAN class=hilite1>s2sh</SPAN>/bean/Person.hbm.xml</value>  
37.        </list>  
38.    </property>  
39.</bean>  
40.  
41.</beans>  
]<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<!-- apache.dbcp连接池的配置 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
	<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
	<property name="url" value="jdbc:mysql://localhost:3306/s2sh?useUnicode=true&amp;characterEncoding=UTF-8"></property>
	<property name="username" value="root"></property>
	<property name="password" value=""></property>
	<!-- 最大活动连接数 -->
	<property name="maxActive" value="100"></property>
	<!-- 最大可空闲连接数 -->
	<property name="maxIdle" value="30"></property>
	<!-- 最大可等待连接数 -->
	<property name="maxWait" value="500"></property>
	<!-- 默认的提交方式(如果不需要事务可以设置成true,在实际应用中一般设置为false,默认为false) -->
	<property name="defaultAutoCommit" value="true"></property>
</bean>
<!-- 这里直接使用spring对hibernate3支持的sessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
	<property name="dataSource" ref="dataSource"></property>
	<!-- hibernate方言等相关配置 -->
	<property name="hibernateProperties">
		<props>
			<prop key="connection.useUnicode">true</prop>
			<prop key="connection.characterEncoding">utf-8</prop>
			<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
			<prop key="hibernate.show_sql">true</prop>
		</props>
	</property>
	<!-- hbm.xml的映射文件 -->
	<property name="mappingResources">
		<list>
			<value>test/s2sh/bean/Person.hbm.xml</value>
		</list>
	</property>
</bean>

</beans>



[/code如果出现乱码问题,可以考虑如下解决方案

Xml代码  
1.<property name="hibernateProperties">  
2.    <props>   
3.        <prop key="connection.useUnicode">true</prop>   
4.        <prop key="connection.characterEncoding">utf-8</prop>   
5.        <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>   
6.        <prop key="hibernate.show_sql">true</prop>   
7.    </props>   
8.</property>   
Xml代码 
1.<property name="hibernateProperties">  
2.    <props>  
3.        <prop key="connection.useUnicode">true</prop>  
4.        <prop key="connection.characterEncoding">utf-8</prop>  
5.        <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>  
6.        <prop key="hibernate.show_sql">true</prop>  
7.    </props>  
8.</property>  
	<property name="hibernateProperties">
		<props>
			<prop key="connection.useUnicode">true</prop>
			<prop key="connection.characterEncoding">utf-8</prop>
			<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
			<prop key="hibernate.show_sql">true</prop>
		</props>
	</property>





或者将url后面加入编码串,如下

Xml代码 
1.<property name="url" value="jdbc:mysql://localhost:3306/s2sh?useUnicode=true&amp;characterEncoding=UTF-8"></property> 
Xml代码
1.<property name="url" value="jdbc:mysql://localhost:3306/<SPAN class=hilite1>s2sh</SPAN>?useUnicode=true&amp;characterEncoding=UTF-8"></property> 
<property name="url" value="jdbc:mysql://localhost:3306/s2sh?useUnicode=true&amp;characterEncoding=UTF-8"></property>

注意 : 这里我的数据库编码是utf-8
具体那种方案好用大家可以尝试一下,我基本上直接将两种方式都加上了。

(4)下面我们开始写DAO层,首先创建test.s2sh.dao包放置Dao类的接口,创建test.s2sh.dao.impl包放置Dao类的实现。
PersonDAO.java

Java代码 
1.package test.s2sh.dao;   
2.  
3.import java.util.List;    
4.  
5.import test.s2sh.bean.Person;    
6.  
7.public interface PersonDAO {    
8.    void savePerson(Person p);    
9.    void removePerson(Person p);    
10.    Person findPersonById(Integer id);   
11.    List<Person> findAllPersons();   
12.    void updatePerson(Person p);    
13.}  
Java代码 
1.package test.<SPAN class=hilite1>s2sh</SPAN>.dao;   
2.  
3.import java.util.List;   
4.  
5.import test.<SPAN class=hilite1>s2sh</SPAN>.bean.Person;   
6.  
7.public interface PersonDAO {   
8.    void savePerson(Person p);   
9.    void removePerson(Person p);   
10.    Person findPersonById(Integer id);   
11.    List<Person> findAllPersons();   
12.    void updatePerson(Person p);   
13.}  
package test.s2sh.dao;

import java.util.List;

import test.s2sh.bean.Person;

public interface PersonDAO {
	void savePerson(Person p);
	void removePerson(Person p);
	Person findPersonById(Integer id);
	List<Person> findAllPersons();
	void updatePerson(Person p);
}



由于使用了spring,所以DAO的实现类我们可以继承HibernateDaoSupport进行实现
PersonDAOImpl.java

Java代码 
1.package test.s2sh.dao.impl;   
2.  
3.import java.util.List;    
4.  
5.import org.springframework.orm.hibernate3.support.HibernateDaoSupport;    
6.  
7.import test.s2sh.bean.Person;    
8.import test.s2sh.dao.PersonDAO;    
9.  
10.public class PersonDAOImpl extends HibernateDaoSupport implements PersonDAO {    
11.  
12.    public List<Person> findAllPersons() {    
13.        String hql = "from Person p order by p.id desc";    
14.        return (List<Person>)this.getHibernateTemplate().find(hql);    
15.    }   
16.  
17.    public Person findPersonById(Integer id) {    
18.        Person p = (Person) this.getHibernateTemplate().get(Person.class, id);    
19.        return p;    
20.    }   
21.  
22.    public void removePerson(Person p) {    
23.        this.getHibernateTemplate().delete(p);    
24.    }   
25.  
26.    public void savePerson(Person p) {    
27.        this.getHibernateTemplate().save(p);    
28.    }   
29.  
30.    public void updatePerson(Person p) {    
31.        this.getHibernateTemplate().update(p);    
32.    }   
33.  
34.}  



Java代码
1.package test.<SPAN class=hilite1>s2sh</SPAN>.dao.impl;   
2.  
3.import java.util.List;   
4.  
5.import org.springframework.orm.hibernate3.support.HibernateDaoSupport;   
6.  
7.import test.<SPAN class=hilite1>s2sh</SPAN>.bean.Person;   
8.import test.<SPAN class=hilite1>s2sh</SPAN>.dao.PersonDAO;   
9.  
10.public class PersonDAOImpl extends HibernateDaoSupport implements PersonDAO {   
11.  
12.    public List<Person> findAllPersons() {   
13.        String hql = "from Person p order by p.id desc";   
14.        return (List<Person>)this.getHibernateTemplate().find(hql);   
15.    }   
16.  
17.    public Person findPersonById(Integer id) {   
18.        Person p = (Person) this.getHibernateTemplate().get(Person.class, id);   
19.        return p;   
20.    }   
21.  
22.    public void removePerson(Person p) {   
23.        this.getHibernateTemplate().delete(p);   
24.    }   
25.  
26.    public void savePerson(Person p) {   
27.        this.getHibernateTemplate().save(p);   
28.    }   
29.  
30.    public void updatePerson(Person p) {   
31.        this.getHibernateTemplate().update(p);   
32.    }   
33.  
34.}  


package test.s2sh.dao.impl;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import test.s2sh.bean.Person;
import test.s2sh.dao.PersonDAO;

public class PersonDAOImpl extends HibernateDaoSupport implements PersonDAO {

public List<Person> findAllPersons() {
String hql = "from Person p order by p.id desc";
return (List<Person>)this.getHibernateTemplate().find(hql);
}

public Person findPersonById(Integer id) {
Person p = (Person) this.getHibernateTemplate().get(Person.class, id);
return p;
}

public void removePerson(Person p) {
this.getHibernateTemplate().delete(p);
}

public void savePerson(Person p) {
this.getHibernateTemplate().save(p);
}

public void updatePerson(Person p) {
this.getHibernateTemplate().update(p);
}

}




(5)下面我们开始进行service层的设计,这里的service层仅是简单调用DAO层的的方法。
同样是创建接口包(test.s2sh.service),实现包和接口类(test.s2sh.service.impl),实现类
PersonService.java

Java代码 
1.package test.s2sh.service;   
2.  
3.import java.util.List;    
4.  
5.import test.s2sh.bean.Person;    
6.  
7.public interface PersonService {    
8.    List<Person> findAll();   
9.    void save(Person p);    
10.    void delete(Person p);    
11.    Person findById(Integer id);   
12.    void update(Person p);    
13.}  
Java代码 
1.package test.<SPAN class=hilite1>s2sh</SPAN>.service;   
2.  
3.import java.util.List;   
4.  
5.import test.<SPAN class=hilite1>s2sh</SPAN>.bean.Person;   
6.  
7.public interface PersonService {   
8.    List<Person> findAll();   
9.    void save(Person p);   
10.    void delete(Person p);   
11.    Person findById(Integer id);   
12.    void update(Person p);   
13.}  



分享到:
评论

相关推荐

    S2SH整合 S2SH整合

    在Java Web开发中,S2SH整合能提供一个强大、灵活且高效的开发环境。 Struts2是基于MVC设计模式的Web应用框架,它负责处理HTTP请求,路由到相应的Action,执行业务逻辑后返回结果视图。Struts2提供了丰富的拦截器...

    S2SH整合完美教程

    【S2SH整合完美教程】 在Java Web开发中,Struts2、Spring和Hibernate的整合是常见的技术栈,被广泛用于构建MVC架构的应用程序。S2SH整合旨在实现业务逻辑与控制层、持久化层的高效协同,提高代码的可维护性和可...

    s2sh整合所需jar包大全

    这个压缩包“s2sh整合所需jar包大全”提供了一整套支持S2SH整合所需的库文件,适用于Eclipse开发环境。 1. **Struts 2**: Struts 2 是一个基于MVC设计模式的Web应用框架,它扩展了经典的Struts 1,提供了更强大的...

    s2sh整合实例

    总的来说,S2SH整合利用了各自框架的优势,为Java Web开发提供了一个强大而灵活的解决方案。理解并掌握S2SH整合,不仅有助于提升开发效率,也有助于构建更高质量的Web应用。在实际开发中,开发者可以根据项目需求...

    S2SH框架整合

    ### S2SH框架整合知识点详解 #### 一、S2SH框架概述 S2SH框架是Struts2、Spring和Hibernate三个开源框架的整合。这三个框架分别负责Web层、业务逻辑层和服务持久化层,通过整合可以实现MVC模式的应用程序开发。 - ...

    S2SH整合报错

    ### S2SH整合报错分析及解决方法 #### 背景介绍 在进行S2SH(Struts+Spring+Hibernate)项目的开发过程中,开发者可能会遇到整合层面的问题,特别是当项目涉及多种框架协同工作时。本文将针对一个具体的错误信息...

    S2SH 整合 导入即可完整包

    总结,S2SH整合提供了一种高效、成熟的Java Web开发解决方案,它简化了开发过程,提高了代码的可维护性。对于初学者来说,理解并掌握S2SH的整合和运作原理,是迈向企业级开发的重要一步。通过实际操作解压后的项目,...

    S2SH整合分析

    S2SH框架整合是指将Struts2(Struts)、Spring和Hibernate三个技术框架进行整合的一种应用架构模式。这种整合旨在简化企业级Java应用开发过程,提高代码复用性,并增强系统的可维护性和扩展性。 #### 二、知识点详解 ...

    S2SH整合精华版

    ### S2SH整合精华版:Struts 2、Spring 2、Hibernate 3集成实践 #### 关键词:Struts2、Spring2、Hibernate3 本文档旨在介绍如何利用Struts 2、Spring 2 和 Hibernate 3进行系统集成开发,并提供了一套完整的实践...

    s2sh整合完全包

    【标题】"s2sh整合完全包"指的是一个包含了所有必要组件的压缩文件,用于支持基于Struts2、Spring和Hibernate(简称s2sh)的Web应用开发。这个包简化了开发过程,因为它包含了这三个框架的库文件,使得开发者无需...

    s2sh整合demo源码

    在S2SH整合中,Hibernate 3.5.6版本作为ORM(对象关系映射)工具,允许开发者通过对象模型来操作数据库,而无需编写SQL。它支持懒加载、缓存策略和复杂查询,使得数据库操作更加便捷。 **整合过程** S2SH的整合...

    s2sh整合详细jar

    本压缩包"**s2sh整合详细jar**"显然是一份包含了这三个框架核心组件的集合,旨在帮助初学者快速搭建SSH整合环境。以下是对每个框架及其整合细节的详细解释: 1. **Struts2**:Struts2是一个基于MVC设计模式的Java ...

    S2SH整合demo

    这三者结合,被称为S2SH整合,能够构建出高效、灵活且可维护的Java Web应用程序。 **Struts2框架**: Struts2是Struts1的升级版,它引入了拦截器(Interceptor)的概念,增强了动作(Action)与结果(Result)的...

    使用配置文件对DAO层封装具有分页功能的S2SH整合实例_好资源0分送

    ### 使用配置文件对DAO层封装具有分页功能的S2SH整合实例 #### 背景及概述 本文档旨在详细介绍如何使用配置文件的方式完成DAO层的封装,并在此基础上实现分页功能,最终达成S2SH(Struts、Spring、Hibernate)的...

    完整的S2SH框架整合, 带jar包

    这个“完整的S2SH框架整合,带jar包”资源包含了这些框架的核心库,以及可能的一个实例项目,旨在帮助开发者快速搭建和理解S2SH的应用。 1. **Struts**:Struts 是一个基于MVC设计模式的Web应用框架,主要用于控制...

    s2sh框架整合

    在S2SH整合中,Spring作为中心枢纽,可以管理Struts2的Action实例,实现依赖注入,同时也可以配置Hibernate的数据源和SessionFactory。 3. **Hibernate**:Hibernate是一个对象关系映射(ORM)框架,它简化了Java...

    s2sh整合实现增删改查源代码(带s2sh整合包)

    这个压缩包提供了实现增删改查功能的源代码,以及完整的S2SH整合包,使得开发者可以直接运行项目,无需从零开始配置环境。 **Struts2** 是一个基于MVC设计模式的Action驱动框架,它负责处理用户的请求,并通过...

    基于Annotation的s2sh整合配置实现分页功能

    基于Annotation的s2sh整合配置实现分页功能基于Annotation的s2sh整合配置实现分页功能基于Annotation的s2sh整合配置实现分页功能基于Annotation的s2sh整合配置实现分页功能基于Annotation的s2sh整合配置实现分页功能

    s2sh整合所有的jar包

    标题 "s2sh整合所有的jar包" 指的是将Struts、Spring和Hibernate这三种技术集成所需的Java档案(JAR)文件集合在一起,便于在项目开发中快速引用和使用。这种整合通常被称为SSH框架,它是Java Web开发中的一个流行...

    S2SH详细搭建(适合新手)

    S2SH框架是Java Web开发中的一个经典组合,由Struts 2、Spring和Hibernate三大框架组成,提供了模型-视图-控制器(MVC)架构的支持,实现了业务逻辑、数据访问和用户界面的解耦。本教程将详细介绍如何在MyEclipse ...

Global site tag (gtag.js) - Google Analytics