全注解简单配置

一、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略
	 */
	

}

猜你喜欢

转载自lizy9456.iteye.com/blog/1883007