Spring4 + hibernate4 配置

来源:互联网 发布:字体模仿软件 编辑:程序博客网 时间:2024/04/29 15:44

折腾了我快两天了,配置spring + hibernate太坑,各种错,各种问题。终于配置好了,记录下。

1. 工程目录预览



2. 依赖包版本
spring 4.0.3
hibernate 4.3.5.Final

3. 先创建maven 工程,加入web模块。首先配置maven的依赖

<?xml version="1.0" encoding="UTF-8"?><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/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>org.bnu</groupId>    <artifactId>dataserver</artifactId>    <version>1.0-SNAPSHOT</version>    <dependencies>        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>3.8.1</version>            <scope>test</scope>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-core</artifactId>            <version>4.0.3.RELEASE</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-context</artifactId>            <version>4.0.3.RELEASE</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-web</artifactId>            <version>4.0.3.RELEASE</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-webmvc</artifactId>            <version>4.0.3.RELEASE</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-orm</artifactId>            <version>4.0.3.RELEASE</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-tx</artifactId>            <version>4.0.3.RELEASE</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-test</artifactId>            <version>4.0.3.RELEASE</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-expression</artifactId>            <version>4.0.3.RELEASE</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-aop</artifactId>            <version>4.0.3.RELEASE</version>        </dependency>        <!-- Mysql -->        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>5.1.29</version>        </dependency>        <!-- Hibernate4 -->        <dependency>            <groupId>org.hibernate</groupId>            <artifactId>hibernate-core</artifactId>            <version>4.3.5.Final</version>        </dependency>        <!-- for JPA, use hibernate-entitymanager instead of hibernate-core -->        <dependency>            <groupId>org.slf4j</groupId>            <artifactId>slf4j-api</artifactId>            <version>1.6.1</version>        </dependency>        <dependency>            <groupId>org.projectlombok</groupId>            <artifactId>lombok</artifactId>            <version>1.14.4</version>        </dependency>        <dependency>            <groupId>javax.servlet</groupId>            <artifactId>javax.servlet-api</artifactId>            <version>3.1-b09</version>            <scope>provided</scope>        </dependency>        <dependency>            <groupId>org.apache.commons</groupId>            <artifactId>commons-dbcp2</artifactId>            <version>2.0</version>        </dependency>    </dependencies></project>

4. spring.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:context="http://www.springframework.org/schema/context"       xsi:schemaLocation="    http://www.springframework.org/schema/beans       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd       http://www.springframework.org/schema/context       http://www.springframework.org/schema/context/spring-context-3.0.xsd      ">    <context:component-scan base-package="org.bnu.dao,org.bnu.service,org.bnu.model" /> </beans>

5. spring-hibernate.xml配置

<beans xmlns="http://www.springframework.org/schema/beans"       xmlns:context="http://www.springframework.org/schema/context"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:tx="http://www.springframework.org/schema/tx"       xmlns:aop="http://www.springframework.org/schema/aop"       xsi:schemaLocation="        http://www.springframework.org/schema/beans             http://www.springframework.org/schema/beans/spring-beans-4.0.xsd        http://www.springframework.org/schema/context        http://www.springframework.org/schema/context/spring-context-4.0.xsd        http://www.springframework.org/schema/aop        http://www.springframework.org/schema/aop/spring-aop-4.0.xsd        http://www.springframework.org/schema/tx        http://www.springframework.org/schema/tx/spring-tx-4.0.xsd        ">    <context:property-placeholder location="classpath:hibernate.properties" />    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">        <property name="dataSource" ref="dataSource" />        <property name="packagesToScan">            <list>                <value>org.bnu.model</value>            </list>        </property>        <property name="hibernateProperties">            <props>                <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>                <prop key="hibernate.dialect">${hibernate.dialect}</prop>                <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>            </props>        </property>    </bean>    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">        <property name="driverClassName" value="${jdbc.driverClassName}"/>        <property name="url" value="${jdbc.url}" />        <property name="username" value="${jdbc.user}" />        <property name="password" value="${jdbc.pass}" />    </bean>    <bean name="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">        <property name="sessionFactory" ref="sessionFactory" />    </bean>    <tx:annotation-driven transaction-manager="txManager" /></beans>

6. spring-mvc.xml配置

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:context="http://www.springframework.org/schema/context"       xmlns:mvc="http://www.springframework.org/schema/mvc"       xmlns:p="http://www.springframework.org/schema/p"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:tx="http://www.springframework.org/schema/tx"       xsi:schemaLocation="        http://www.springframework.org/schema/beans             http://www.springframework.org/schema/beans/spring-beans-3.0.xsd        http://www.springframework.org/schema/context        http://www.springframework.org/schema/context/spring-context-3.0.xsd        http://www.springframework.org/schema/mvc        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd        http://www.springframework.org/schema/tx        http://www.springframework.org/schema/tx/spring-tx-4.0.xsd        ">    <mvc:annotation-driven />    <context:component-scan base-package="org.bnu.controller"/>    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <property name="prefix">            <value>/</value>        </property>        <property name="suffix">            <value>.jsp</value>        </property>    </bean>    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">    </bean></beans>

7. hibernate.properties配置
# jdbc.Xjdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/sensordata?useUnicode=true&characterEncoding=UTF-8jdbc.user=xiejdbc.pass=123# hibernate.Xhibernate.dialect=org.hibernate.dialect.MySQLDialecthibernate.show_sql=truehibernate.hbm2ddl.auto=update

8. web.xml配置

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/javaee"           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"           version="3.0">    <display-name>dataserver</display-name>    <welcome-file-list>        <welcome-file>index.jsp</welcome-file>    </welcome-file-list>    <context-param>        <param-name>contextConfigLocation</param-name>        <param-value>classpath:spring.xml,classpath:spring-hibernate.xml</param-value>    </context-param>    <listener>        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    </listener>    <servlet>        <servlet-name>sprintMVC</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <init-param>            <param-name>contextConfigLocation</param-name>            <param-value>classpath:spring-mvc.xml</param-value>        </init-param>    </servlet>    <servlet-mapping>        <servlet-name>sprintMVC</servlet-name>        <url-pattern>/</url-pattern>    </servlet-mapping>    <filter>        <filter-name>encodingFilter</filter-name>        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>        <init-param>            <param-name>encoding</param-name>            <param-value>UTF-8</param-value>        </init-param>    </filter>    <filter-mapping>        <filter-name>encodingFilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping></web-app>

9. 配置文件完成之后,开始写代码。这里主要以user为例子,其中user是表映射的pojo类,userDao负责数据表的curd操作,userService进一步封装userDao,提供用户相关的服务,并提供给ctroller类中的userCtroller. 这个类负责处理用户请求,处理请求,调用userService相关的服务,完成处理后,跳转到结果页面

Users 类

@Entity@Table(name="users")public class Users {    public Users(){        super();    }    @Id    @Column(name="id",length=32,nullable=false,unique=true)    @GenericGenerator(name="generator",strategy="uuid.hex")    @GeneratedValue(generator="generator")    @Getter@Setter    private String id;    @Column(name="age")    @Getter@Setter    private Integer age;    @Column(name="userName")    @Getter@Setter    private String userName;}

UserDao类

@Repository("userDao")public class UserDao {    @Autowired    private SessionFactory sessionFactory;    public void save(Users users){        sessionFactory.getCurrentSession().save(users);    }}

UserService类

@Service("userService")@Transactionalpublic class UserService {    @Autowired    private UserDao userDao;    public void addUser(Users user){        userDao.save(user);    }}

UserCtroller类

@Controller@RequestMapping("/user")public class UserController {    @Autowired    private UserService userService;    @RequestMapping(value = "/manager")    public ModelAndView hello(){        ModelAndView mv=new ModelAndView();        mv.addObject("message","helloMVC");        mv.setViewName("users");        return mv;    }    @RequestMapping(value = "/add")    public ModelAndView count(){        ModelAndView mv=new ModelAndView();        Users user=new Users();        user.setUserName("xie");        user.setAge(12);        try{            userService.addUser(user);            mv.setViewName("success");            mv.addObject("user",user);            mv.addObject("msg","注册成功");            return mv;        }catch (Exception e){            mv.setViewName("error");            mv.addObject("user",null);            mv.addObject("msg","注册失败");            return mv;        }    }}

10. 运行Tomcat 7 。输入url: http://localhost:8080/dataserver/user/add


0 0
原创粉丝点击