Maven2 + tapestry5.0.18 + spring2 + hibernate3.2

   用quickstart生成Tapestry架构,再进行相应的spring与hibernate配置。
1.依赖包
    <dependencies>
        <dependency>
            <groupId>org.apache.tapestry</groupId>
            <artifactId>tapestry-core</artifactId>
            <version>${tapestry-release-version}</version>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>5.1</version>
            <classifier>jdk15</classifier>
            <scope>test</scope>
        </dependency>

        <dependency>
      	   <groupId>org.apache.tapestry</groupId>
     	   <artifactId>tapestry-spring</artifactId>
           <version>5.0.18</version>
        </dependency>
        <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring</artifactId>
           <version>2.0.7</version>
       </dependency>
       <dependency>
        <groupId>javax.persistence</groupId>
        <artifactId>persistence-api</artifactId>
        <version>1.0</version>
      </dependency>
      <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-annotations</artifactId>
        <version>${hibernate-annotations-version}</version>
      </dependency>
      <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-commons-annotations</artifactId>
        <version>${hibernate-annotations-version}</version>
      </dependency>
      <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate</artifactId>
        <version>3.2.5.ga</version>
        <exclusions>
          <exclusion>
            <groupId>javax.transaction</groupId>
            <artifactId>jta</artifactId>
          </exclusion>
        </exclusions>
      </dependency>	
      <dependency>
      	<groupId>org.apache.geronimo.specs</groupId>
      	<artifactId>geronimo-jta_1.1_spec</artifactId>
      	<version>1.1</version>
      </dependency>
      <dependency>
    	<groupId>commons-dbcp</groupId>
    	<artifactId>commons-dbcp</artifactId>
    	<version>1.2.2</version>
      </dependency> 
    </dependencies>

2.maven插件
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                    <optimize>true</optimize>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty-plugin</artifactId>
                <version>6.1.9</version>
                <configuration>
                    <requestLog implementation="org.mortbay.jetty.NCSARequestLog">
                        <append>true</append>
                    </requestLog>
                </configuration>
        		<dependencies>
        		     <dependency>
          		<groupId>mysql</groupId>
            		<artifactId>mysql-connector-java</artifactId>
            		<version>${mysql-connector-version}</version>
         		      </dependency>
         		      <dependency>
                  	              <groupId>commons-dbcp</groupId>
    	                       <artifactId>commons-dbcp</artifactId>
    	                       <version>1.2.2</version>
	                </dependency> 
        		</dependencies>        
            </plugin>
            <plugin>
        		<groupId>org.codehaus.mojo</groupId> 
        		<artifactId>hibernate3-maven-plugin</artifactId>
        		<version>2.0</version>
        		<configuration>
          	      <components>
            		<component>
              		    <name>hbm2ddl</name>
              		<implementation>annotationconfiguration</implementation> 
         			</component>
          	      </components>
        		</configuration>
        		<dependencies>
          	    <dependency>
            		<groupId>mysql</groupId>
            		<artifactId>mysql-connector-java</artifactId>
            		<version>${mysql-connector-version}</version>
          	   </dependency>
        		</dependencies>        
        </plugin>
        </plugins>

        <properties>
          <tapestry-release-version>5.0.18</tapestry-release-version>
          <hibernate-annotations-version>3.3.0.ga</hibernate-annotations-version>
          <mysql-connector-version>5.0.4</mysql-connector-version>
        </properties>


3.web.xml
    <context-param>
        <param-name>tapestry.app-package</param-name>
        <param-value>com.logcd.tapestry5.myapp</param-value>
    </context-param>
    <context-param>  
        <param-name>tapestry.production-mode</param-name>  
        <param-value>false</param-value>
    </context-param>  
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
   
    <filter>
        <filter-name>app</filter-name>
        <filter-class>org.apache.tapestry5.spring.TapestrySpringFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>app</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

4.applicationContext.xml
<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"
    default-lazy-init="true">

	<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/logcd" />
		<property name="username" value="root"/>
		<property name="password" value=""/>
	</bean>	

	<bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="mappingLocations">
        	<value>classpath:/**/*.hbm.xml</value>
    	</property>
        
        <property name="annotatedClasses">
            <list>
                <value>com.logcd.myapp.models.User</value>
            </list>
        </property>
        <property name="annotatedPackages">
            <list>
                <value>com.logcd.myapp.models</value>
            </list>
        </property>
        
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.show_sql">false</prop>
                <prop key="hibernate.format_sql">true</prop>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.connection.pool_size">0</prop>
        	    <prop key="hibernate.connection.autocommit">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
            </props>
        </property>
    </bean>

    <bean id="userDAO" class=" com.logcd.myapp.dao.impl.UserDaoImpl">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
 </beans>

5.User类
package com.logcd.myapp.models;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import javax.persistence.Entity;

import org.apache.tapestry5.beaneditor.NonVisual;
import org.apache.tapestry5.beaneditor.Validate;

@Entity
@Table(name = "users")
public class User implements Serializable {
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@NonVisual
	private Long id;

	private String userName;

	private String emailAddress;

	public User(){}
	
	@Column(name = "id")
	public Long getId() {
		return id;
	}

	@SuppressWarnings("unused")
	private void setId(Long id) {
		this.id = id;
	}

	@Column(name = "username")
	public String getUserName() {
		return userName;
	}

	@Validate(value = "required")
	public void setUserName(String userName) {
		this.userName = userName;
	}

	@Column(name = "emailAddress")
	public String getEmailAddress() {
		return emailAddress;
	}

	@Validate(value = "required")
	public void setEmailAddress(String emailAddress) {
		this.emailAddress = emailAddress;
	}

}

6.页面java文件
package com.logcd.tapestry5.myapp.pages.user;

import java.util.List;

import org.apache.tapestry5.ioc.annotations.Inject;

import com.logcd.myapp.dao.UserDao;
import com.logcd.myapp.models.User;

public class CreateUser {

	private User user;
	
	@Inject
    private UserDao userDAO;
	public CreateUser(){}

	public void setUser(User user) {
		this.user = user;
	}

	public User getUser() {
		return user;
	}

	Object onSuccess() {
        userDAO.save(user);

        return CreateUser.class;
    }

	public List<User> getUsers() { return userDAO.getAllUsers(); }

}

你可能感兴趣的:(spring,maven,Hibernate,mysql,tapestry)