一、Struts零配置: 需要struts2-convention-plugin-2.2.1.jar
1.1. struts2.properties: 配置convention插件参数
/**
* locators.basePackage -- 扫描包根目录
* locators -- 包名关键字
* path -- 结果返回jsp目录 "/jsp/"等于"/webroot/jsp/"
*/
struts.convention.package.locators.basePackage=com.test.web
struts.convention.package.locators=action
struts.convention.result.path=/jsp/
1.2. struts.xml配置拦截器 package包继承convention-default
<package name="crud-default" extends="convention-default,json-default">
二、Spring注解\JPA注解\Hibernate注解
2.1. Spring*.xml中配置注解(组件扫描、hibernate sessionfactory注解、事务注解)
<!-- Spring注解 扫描 -->
<context:component-scan base-package="com.test"/>
<!-- 配置sessionfactory -
---注意引用类class: AnnotationSessionFactoryBean;
---注意扫描属性property: packagesToScan -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
lazy-init="true">
<property name="dataSource" ref="testmysql"></property>
<property name="namingStrategy">
<bean class="org.hibernate.cfg.ImprovedNamingStrategy"></bean>
</property>
<property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
<prop key="hibernate.jdbc.batch_size">${hibernate.jdbc.batch_size}</prop>
<prop key="hibernate.jdbc.fetch_size">${hibernate.jdbc.fetch_size}</prop>
<prop key="hibernate.cache.provider_class">${hibernate.cache.provider_class}</prop>
</props>
</property>
<property name="packagesToScan" value="com.test.pojo" />
<property name="eventListeners">
<map>
<entry key="save-update">
<list>
<bean class="org.hibernate.event.def.DefaultSaveOrUpdateEventListener" />
</list>
</entry>
</map>
</property>
</bean>
<!-- Transaction事务管理配置 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager"
lazy-init="default">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 声明式 事务
proxy-target-class=true 使用cglib动态代理不需要继承接口(默认jdk动态代理)
-->
<tx:annotation-driven transaction-manager="transactionManager"
proxy-target-class="true" />
三、注解使用
3.1. Spring注解使用
- DAO -- @Repository
- Service - @Service
- Action -- @Controller
3.2. JPA(javax.persistence api)使用
- Pojo -- @Entity、@Table...
----User.java
package com.test.pojo;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
/**
* User entity. @author MyEclipse Persistence Tools
*/
@Entity
@Table(name = "user", catalog = "test")
public class User implements java.io.Serializable {
// Fields
/**
*
*/
private static final long serialVersionUID = 1780768557807417443L;
// Property accessors
@GenericGenerator(name = "generator", strategy = "increment")
@Id
@GeneratedValue(generator = "generator")
@Column(name = "id", unique = true, nullable = false)
private Integer id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "roleid", nullable = false)
private Role role;
@Column(name = "name", length = 30)
private String name;
@Column(name = "sex", length = 1)
private Character sex;
@Column(name = "enable")
private boolean enable;
// Constructors
/** default constructor */
public User() {
}
/** minimal constructor */
public User(Integer id) {
this.id = id;
}
/** 属性get/set略 */
}
----Role.java
package com.test.pojo;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
/**
* Role entity. @author MyEclipse Persistence Tools
*/
@Entity
@Table(name = "role", catalog = "test")
public class Role implements java.io.Serializable {
// Fields
/**
*
*/
private static final long serialVersionUID = 6747382540556815448L;
@GenericGenerator(name = "generator", strategy = "increment")
@Id
@GeneratedValue(generator = "generator")
@Column(name = "id", unique = true, nullable = false)
private Integer id;
@Column(name = "name", length = 30)
private String name;
@Column(name = "enbale")
private boolean enable;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "role")
private Set<User> users = new HashSet<User>(0);
/**
* get/set略
*/
}
分享到:
相关推荐
SSH框架整合,全jpa注解真正的零配置。 struts2.3.8 spring3.2 hibernate4.1.9. 带有分页,全局异常,权限拦截器,session过滤等功能。 内有jar包。导入开发工具后部署既可跑起来。已做了简单的数据库操作功能。供...
本项目提供了一个使用全注解配置的SSH基础架构,适合初学者学习SSH框架的整合以及注解配置的应用。通过这个项目,开发者可以深入理解各框架如何协同工作,同时掌握Maven的项目管理和依赖管理,提升Java Web开发技能...
- `RequiredAnnotationBeanPostProcessor`:检查被`@Required`注解标记的属性是否已设置。 #### 实例解析 在使用注解配置之前,我们通常需要在Spring容器中定义多个类作为Bean,并手动配置它们之间的依赖关系。...
这个"ssm纯注解配置例子.rar"文件显然包含了关于如何在项目中使用SSM框架进行纯注解配置的示例代码。下面将详细阐述SSM框架中的注解配置及其相关知识点。 首先,Spring框架提供了丰富的注解来简化配置,如`@...
在这个"springmvc注解简单实例"中,我们将深入探讨Spring MVC中的一些关键注解,以及它们在DAO层、Service层和Controller层中的应用。让我们逐一解析这些层面的注解使用。 首先,我们来到**DAO层**。在Spring MVC中...
标题 "Spring+DWR 全注解版" 暗示了这个压缩包包含了一个使用Spring框架和Direct Web Remoting (DWR) 技术的示例应用,且该应用主要依赖注解来配置和管理组件。DWR是一种在Web应用程序中实现AJAX功能的开源库,它...
例如,我们可以定义一个简单的服务类,并用`@Component`注解标记: ```java @Component public class MyService { // ... } ``` 2. `@Autowired`:用于自动装配bean的依赖。当Spring扫描到这个注解时,它会...
3. **配置DWR**:在`dwr.xml`配置文件中,可以使用`<create>`标签手动配置可远程访问的Java类,但在全注解方式下,这部分配置可以省略,因为Spring会自动处理。 4. **注解Java类**:在需要暴露给DWR的Java类上使用`...
在本文中,我们将深入探讨如何将Spring 4.0与MyBatis 3.2进行整合,特别是通过全注解的方式实现这一过程。Spring MVC是一个强大的MVC框架,而MyBatis是一个轻量级的持久层框架,两者结合可以提供高效、灵活的数据...
例如,Spring的`@Component`、`@Service`、`@Repository`和`@Controller`注解用于定义不同类型的bean,Struts2的`@Action`、`@Results`和`@Namespace`注解用于动作映射和结果设置,而Hibernate的注解则用于数据库...
Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解,涉及的是JavaEE开发中常见的SSH框架(Struts2、Spring、Hibernate)的整合,尤其强调了注解在开发中的应用,旨在简化配置,提高开发效率。SSH框架的组合在...
在这个"struts2.3.4.1注解零配置"的例子中,我们将深入探讨如何利用Struts2的注解来构建一个简单的登录系统。 首先,了解Struts2的核心概念是必要的。Struts2是一个基于MVC(Model-View-Controller)设计模式的框架...
在Spring框架中,注解是实现依赖注入(Dependency Injection,DI)的一种重要方式,极大地简化了配置文件,提高了代码的可读性和可维护性。本篇文章将深入探讨Spring中的注解,以及如何通过注解进行自动装配。 首先...
### Hibernate注解配置详解 #### 一、概述 Hibernate 是一款强大的对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互过程。在使用Hibernate的过程中,开发者可以通过注解来实现对象与数据库表之间...
3. 使用One和Many注解:在配置多表查询时,我们可以使用One和Many注解来配置一对一和一对多的关系。例如,在Account实体类中,我们可以使用@Result注解来配置用户查询的方式。 4. 实现多表查询:最后,我们可以使用...
通过这个简单的MyBatis注解案例,我们可以了解到如何利用MyBatis进行基本的数据库操作,包括选择性地使用注解替代XML配置,以及如何在Spring框架下集成MyBatis。在实际项目中,还可以结合MyBatis的其他特性,如结果...
- `spring-context.xml`:Spring的配置文件,可能包含了扫描注解类的设置和数据源配置。 - `persistence.xml`:Hibernate的JPA配置文件,用于定义实体管理和数据源。 - 各个注解过的Java类,如User、UserService、...
本教程将详细讲解如何利用Eclipse和SSH框架,通过全注解的方式实现一个简单的登录功能,无需XML配置。 首先,我们需要了解SSH框架的各自职责: 1. **Struts2**:作为MVC(Model-View-Controller)框架,负责处理...
在这个基于注解的Struts2简单工程中,我们将深入探讨如何使用注解来配置和控制应用程序的行为,而不是传统的XML配置文件。 在传统的Struts2配置中,我们通常会在`struts.xml`文件中定义Action类、结果类型和结果...
此外,也可以给 `<result>`, `<interceptor-ref>` 等添加 `<param>` 参数,例如使用@Result注解配置返回类型为json,并设置相关的参数: ```java @Result(type="json", name="jsonr", params={"root","citys"}) ```...