在这3种框架搭配使用的时候,我们往往需要写很多xml配置文件来配置各个框架的依赖关系。大的项目中,xml配置文件的过多,过于繁琐,导致查找起来会很不方便。
在这种情况下,我们需要简化我们的配置文件,同时结合部分xml来进行配置,这时候我们想到了annotation,这个近几年炒得很火的玩意。annotation和xml各自的好处和弊端我就不多说了,看代码吧。
开发环境要求:
jdk6.0以上。tomcat5.5以上(也许tomcat5.0也行 不过没试过)
先从hibernate入手吧:
按照以往的写法,我们需要有.hbm文件来完成po映射。现在我们通过annotation省去了这部分工作。
具体代码如下:这是一个po类
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "userlog")
public class UserLog {
@Id
@GeneratedValue
private Long id;
@Column(name = "loginName")
private String loginName;
....下面是setter/getter方法。
我们没在spring配置文件中配置hibernate连接信息,还是采用传统的hibernate.cfg.xml,当然也可以在spring中配置。代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.datasource">java:/comp/env/jdbc/ExampleDB</property>
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- <property name="hbm2ddl.auto">create</property>-->
<property name="show_sql">true</property>
<mapping class="com.nuctech.po.UserLog"/>
</session-factory>
</hibernate-configuration>
通过mapping class 我们就完成了po映射。
OK!我们再看dao层:
@Component
public class TestDao{
@Resource
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sf) {
this.sessionFactory = sf;
}
public Session getSession() {
return sessionFactory.getCurrentSession();
}
public void save(Object obj){
getSession().save(obj);
}
}
在这里,我们的dao采用了@Component 表示它是一个组件,在别的类中将会去调用。
@Resource 引用SessionFactory 的bean.
关于annotation 可以参考Spring-Reference_zh_CN.chm
再来看我们的Action:
@Component("TestAction")
public class TestAction extends ActionSupport {
@Resource
private TestDao dao; //这里引用上面的Component
private UserLog log;
...setter/getter方法
其他的写法都一样了。
}
再看我们的struts配置文件
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml"/>
<constant name="struts.objectFactory" value="spring" />
<constant name="struts.devMode" value="true" />
<package name="com.nuctech.action" extends="struts-default">
<action name="queryUserLogByPage" class="TestAction" method="queryUserLogByPage">
......省略....
</action>
</package>
</struts>
注意这个action名字与@Component("TestAction")一致。
在没有annotation的情况下,我们在spring的配置文件中需要有很多的bean注入。现在都已经在类中注入了 那么我们现在来看spring配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<context:annotation-config />
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="configLocation" value="classpath:/hibernate.cfg.xml" />
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<context:component-scan base-package="com.xxxx"/>
<tx:annotation-driven/>
</beans>
我们只在这个配置文件中配置了sessionFactory.以前需要配置的bean不见了。
另外附上我们的jndi配置文件,在WebContent(WebRoot)下面的META-INF文件夹下面的context.xml。
<?xml version="1.0" encoding="UTF-8"?>
<Context antiResourceLocking="false">
<!-- 以下段配置session在tomcat重启时的持久化策略,saveOnRestart为false时不进行持久化,方便调试时使用 -->
<Manager className="org.apache.catalina.session.PersistentManager"
debug="0" saveOnRestart="false" maxActiveSessions="-1"
minIdleSwap="-1" maxIdleSwap="-1" maxIdleBackup="-1">
<Store className="org.apache.catalina.session.FileStore"
directory="mydir" />
</Manager>
<!-- MySQL配置-->
<Resource name="jdbc/ExampleDB" type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=utf-8"
username="root" password="123" validationQuery="select 1"
maxIdle="4" maxWait="5000" maxActive="8" removeAbandoned="true"
removeAbandonedTimeout="120">
</Resource>
</Context>
注意这个jndi名字与hibernate.cfg.xml中一致。
先就这样吧。
分享到:
相关推荐
总结来说,"struts2.1 + spring 2.5 + hibernate 3.2 增删改查"的例子涵盖了Web应用开发中的核心部分:前端请求处理(Struts2)、业务逻辑管理(Spring)和数据库操作(Hibernate)。这个例子为初学者提供了一个很好...
### Spring2.5 + Hibernate3.2 + Struts2.0 组合配置说明 在当前的软件开发领域,Spring2.5、Hibernate3.2 和 Struts2.0 这三个框架因其卓越的性能与丰富的功能而备受青睐。它们分别在业务逻辑层管理、数据持久化...
Struts2、Spring2.5和Hibernate3.2是经典的Java Web开发框架组合,它们各自在应用程序的不同层面提供了强大的功能。这个"sshTest"项目是一个使用这三个框架的注解配置的完整Eclipse工程,同时也包含了数据库脚本,...
整合S2SH+Freemarker,后台用Spring管理各个bean,Hibernate做数据库持久化,viewer用Freemarker。整合中对Struts2,Hibernate,Spring都采用Annotation进行注解类。
超级详细的SSH2项目实例详解,并且附带两个项目详解。两种注解实现方式。不同的生成数据脚本实现。 在JavaEE企业级开发中,以SSH2框架为核心的应用非常广,大象根据项目实践经验,通过二个实例,详细的为大家讲解...
总之,"Struts2+Spring2.5+Hibernate3+annotation"的整合是Java Web开发中的经典组合,利用注解可以显著提升开发体验,减少配置文件的复杂性,使得项目结构更加清晰。如果你希望深入了解Java Web开发或者优化现有...
整合S2SH+Freemarker+oscache,后台用Spring管理各个bean,Hibernate做数据库持久化,viewer用Freemarker。整合中对Struts2,Hibernate,Spring都采用Annotation进行注解类。
在搭建一个基于Java8 + Tomcat8 + Struts2.5 + Spring4.3 + Hibernate5.2 的项目前,首先需要对开发环境进行配置。 **1. Java8**: 作为项目的运行基础环境,确保已安装Java8,并正确设置JAVA_HOME等环境变量。 **2....
在Spring 2.5版本之后,Spring引入了对注解的强大支持,允许开发者在类或方法上直接标注,替代XML配置来声明bean及其依赖。例如,`@Component`、`@Service`、`@Repository`和`@Controller`注解用于标记组件,`@...
Struts1.3、Spring2.5 和 Hibernate3.3 是经典的 Java Web 开发框架组合,它们在企业级应用中广泛使用。这个组合被称为“SSH”(Struts-Spring-Hibernate),它允许开发者构建可扩展且松耦合的后端系统。在本项目中...
spring_3.2.0+hibernate_4.1.9+struts2_2.3.7全annotation编写,采用MD5加密,已实现登录,注册,注销,验证码,带sql文件,src下面的SystemGlobals.properties文件配置下数据库就可以直接运行
在本项目中,开发者可能使用上述框架来实现这些功能,如使用Struts2处理用户请求,Spring管理业务逻辑和服务,Hibernate处理数据持久化,同时利用注解提高开发效率。 6. **购物网**:购物网是电子商务网站的一种,...
2. **事务管理**:Spring提供声明式事务管理,通过`<tx:annotation-driven>`启用基于注解的事务管理,或在配置文件中手动配置事务规则。 3. **DAO层的实现**:Spring的`HibernateTemplate`或`HibernateOperations`...
2 利用struts2 的LoginAction-validation.xml 3 在bean里把service包;暴露DWR,写了一个验证用户名的流程 4 采用jpa作为POJO,还是减少配置 5 加入display的分页,并且是物理分页 打开后自已建表sql.txt jdbc....
这篇文档主要介绍了一个使用注解(Annotation)进行Struts2.0、Hibernate3.3和Spring2.5整合开发的教程。这种集成方式相比传统的XML配置,可以简化配置过程,提高开发效率。以下是各个框架及注解技术在教程中的应用: ...
总的来说,基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发利用注解简化了配置,提高了开发效率,使得代码更加可读,降低了出错的可能性。然而,需要注意的是,虽然注解使得配置文件减少,但过多的注解也...