基于注解的maven+spring+hibernate+mysql简单demo

来源:互联网 发布:模拟盘软件 编辑:程序博客网 时间:2024/04/29 04:42

demo最终架构

一、配置maven的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>poobo</groupId><artifactId>poobo</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>Maven Webapp Archetype</name><url>http://maven.apache.org</url><properties><java-version>1.7</java-version><spring-version>4.0.3.RELEASE</spring-version><hibernate-version>4.2.7.Final</hibernate-version><mysql-version>5.1.27</mysql-version><apache-connection-pooling-version>1.4</apache-connection-pooling-version></properties><dependencies><!-- Spring --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring-version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring-version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${spring-version}</version></dependency><!-- Hibernate --><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>${hibernate-version}</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-entitymanager</artifactId><version>${hibernate-version}</version></dependency><!-- <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-commons-annotations</artifactId> <version>3.3.0.ga</version> </dependency> --><!-- Apache's Database Connection Pooling --><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>${apache-connection-pooling-version}</version></dependency><dependency><groupId>commons-pool</groupId><artifactId>commons-pool</artifactId><version>${apache-connection-pooling-version}</version></dependency><!-- MySQL --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql-version}</version></dependency><!-- Servlet --><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.1</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency></dependencies><!-- <build><plugins>Tomcat 7 plugin<plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.0</version></plugin><plugin><artifactId>maven-eclipse-plugin</artifactId><version>2.9</version><configuration><additionalProjectnatures><projectnature>org.springframework.ide.eclipse.core.springnature</projectnature></additionalProjectnatures><additionalBuildcommands><buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand></additionalBuildcommands><downloadSources>true</downloadSources><downloadJavadocs>true</downloadJavadocs></configuration></plugin></plugins></build> --><repositories><repository><id>java.net</id><url>http://download.java.net/maven/2/</url></repository></repositories></project>

二、配置web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><!-- The definition of the Root Spring Container shared by all Servlets and Filters --><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring/root-context.xml</param-value></context-param><!-- Creates the Spring Container shared by all Servlets and Filters --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- Processes application requests --><servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring/dispatcherServlet/servlet-context.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>


三、配置root-context.xml

<?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:p="http://www.springframework.org/schema/p"xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans.xsd  http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context.xsd  http://www.springframework.org/schema/tx  http://www.springframework.org/schema/tx/spring-tx.xsd"><!-- Root Context: defines shared resources visible to all other web components --><bean id="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="locations"><list><value>classpath:database.properties</value></list></property></bean><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close" p:driverClassName="${jdbc.driverClassName}"p:url="${jdbc.url}" p:username="${jdbc.username}" p:password="${jdbc.password}" /><bean id="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="packagesToScan"><list><value>com.poobo.quote.model</value></list></property><property name="configLocation" value="classpath:hibernate.cfg.xml"></property><!-- <property name="hibernateProperties"> <props> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.dialect">${hibernate.dialect}</prop> <prop key="hibernate.show_sql">false</prop> </props> </property> --></bean><!-- 配置声明式的事务管理(采用基于注解的方式) --><bean id="transactionManager"class="org.springframework.orm.hibernate4.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean><tx:annotation-driven transaction-manager="transactionManager" /><!-- 自动扫描与装备bean --><context:component-scan base-package="com.poobo.quote" /></beans>

四、配置servlet-context.xml

<?xml version="1.0" encoding="UTF-8"?><beans:beans xmlns="http://www.springframework.org/schema/mvc"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd       http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"default-lazy-init="true"><!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure --><!-- Enables the Spring MVC @Controller programming model --><annotation-driven /><context:component-scan base-package="com.poobo.quote.controller" /><!-- Handles HTTP GET requests for /web-resources/** by efficiently serving up static resources in the ${webappRoot}/resources/ directory --><resources mapping="/web-resources/**" location="/resources/" /><!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory --><beans:beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><beans:property name="prefix" value="/WEB-INF/views/" /><beans:property name="suffix" value=".jsp" /></beans:bean></beans:beans>
五、配置database.properties

jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/testjdbc.username=rootjdbc.password=roothibernate.dialect=org.hibernate.dialect.MySQLDialect

六、配置hibernate.cfg.xml

<?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="dialect">org.hibernate.dialect.MySQLDialect</property><!-- Database connection settings <property name="connection.driver_class">org.hsqldb.jdbcDriver</property> <property name="connection.url">jdbc:hsqldb:hsql://localhost</property> <property name="connection.username">sa</property> <property name="connection.password"></property> JDBC connection pool (use the built-in) <property name="connection.pool_size">1</property> SQL dialect <property name="dialect">org.hibernate.dialect.HSQLDialect</property> Enable Hibernate's automatic session context management <property name="current_session_context_class">thread</property> Disable the second-level cache <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> --><!-- Echo all executed SQL to stdout --><property name="show_sql">true</property><!-- Drop and re-create the database schema on startup --><property name="hbm2ddl.auto">update</property><!-- 对应实体配置文件路径 --><mapping resource="com/poobo/quote/model/User.hbm.xml" /></session-factory></hibernate-configuration>

七、新建实体model包,新建实体User.java,实体配置文件User.hbm.xml放在同一文件夹下

package com.poobo.quote.model;public class User {private String pk_id;private String username;private String password;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getPk_id() {return pk_id;}public void setPk_id(String pk_id) {this.pk_id = pk_id;}}


<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.poobo.quote.model"><class name="User" table="user"><id column="pk_id" name="pk_id" type="java.lang.String"><generator class="assigned"></generator></id><property name="username"></property><property name="password"></property></class></hibernate-mapping>

八、dao层接口UserDao.xml及其实现类UserDaoImpl.java

package com.poobo.quote.dao;import com.poobo.quote.model.User;public interface UserDao {public void saveUser(User user);}

package com.poobo.quote.dao.impl;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Repository;import com.poobo.quote.dao.UserDao;import com.poobo.quote.model.User;@Repositorypublic class UserDaoImpl implements UserDao {//注入sessionFactory@Autowiredprivate SessionFactory sessionFactory;public void saveUser(User user) {getSession().merge(user);}public SessionFactory getSessionFactory() {return sessionFactory;}public Session getSession() {Session sess = getSessionFactory().getCurrentSession();if (null == sess) {sess = getSessionFactory().openSession();}return sess;}}

九、service层接口及实现类

package com.poobo.quote.service;import com.poobo.quote.model.User;public interface UserService {public void saveUser(User user);}


package com.poobo.quote.service.impl;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import com.poobo.quote.dao.UserDao;import com.poobo.quote.model.User;import com.poobo.quote.service.UserService;@Servicepublic class UserServiceImpl implements UserService {@Autowiredprivate UserDao userDao;@Transactionalpublic void saveUser(User user) {userDao.saveUser(user);}}


十、控制层

package com.poobo.quote.controller;import java.util.UUID;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import com.poobo.quote.model.User;import com.poobo.quote.service.UserService;@Controllerpublic class UserController {@Autowiredprivate UserService userService;@RequestMapping("/test.do")@ResponseBodypublic String test() {User user = new User();user.setPassword("1234");user.setPk_id(UUID.randomUUID().toString());user.setUsername("张三");userService.saveUser(user);return "nihao";}}


另注:如果hibernate是基于注解的,则不需要第七步配置文件及第六步相应的配置中去掉,将实体中添加注解,最终修改如下

package com.poobo.quote.model;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name = "User")public class User {private String pk_id;private String username;private String password;@Id@Column(name = "pk_id")//@GeneratedValuepublic String getPk_id() {return pk_id;}@Columnpublic String getUsername() {return username;}@Columnpublic String getPassword() {return password;}public void setPk_id(String pk_id) {this.pk_id = pk_id;}public void setUsername(String username) {this.username = username;}public void setPassword(String password) {this.password = password;}}




0 0