hibernate+spring+springMVC基本配置

    xiaoxiao2021-04-13  27

    web.xml

    <!-- Spring配置 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:config/springAnnotation-*.xml</param-value> </context-param> <!-- Spring监听 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- SpringMVC配置 --> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <!-- contextConfigLocation是个固定的参数 --> <param-name>contextConfigLocation</param-name> <!-- 加载配置文件 --> <param-value>classpath*:config/springAnnotation-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>

    springAnnotation-hibernate.xml

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd" [ <!ENTITY contextInclude SYSTEM "org/springframework/web/context/WEB-INF/contextInclude.xml"> ]> <!-- hibernate5个对象--> <!-- configLocations,sessionFactory,session ,transaction,Query--> <beans> <!-- 配置数据源 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <!-- 指定连接数据库的驱动 --> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> <!-- 指定连接数据库的URL --> <property name="url" value="jdbc:oracle:thin:@localhost:1521:ORCL"/> <!-- 指定连接数据库的用户名 --> <property name="userName" value="spring"/> <!-- 指定连接数据库的密码 --> <property name="password" value="spring"/> </bean> <!--配置数据库会话工厂--> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <!-- 引用数据源 --> <property name="dataSource" ref="dataSource"/> <property name="hibernateProperties"> <!-- hibernate属性配置 --> <props> <!-- 指定一种方言, 允许Hibernate针对特定的关系数据库生成优化的SQL --> <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10Dialect</prop> <!--hibernate.hbm2ddl.auto参数的作用主要用于:自动创建|更新|验证数据库表结构 --> <!-- 在SessionFactory创建时,自动检查数据库结构,或者将数据库schema的DDL导出到数据库. 使用 create-drop时,在显式关闭SessionFactory时,将drop掉数据库schema. 取值 validate | update | create | create-drop --> <!-- update:第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库), 以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。 要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。--> <prop key="hibernate.hbm2ddl.auto">update</prop> <!--输出所有SQL语句到控制台 --> <prop key="hibernate.show_sql">true</prop> <!--在log和console中打印出更漂亮的SQL。 取值 true | fals--> <prop key="hiberante.format_sql">true</prop> </props> </property> <property name="configLocations"> <list> <value> <!--配置映射的类--> classpath*:com/tgb/web/controller/hibernate/hibernate.cfg.test.xml </value> </list> </property> </bean> <!-- 配置事务容器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <bean id="transactionBese" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" lazy-init="true" abstract="true"> <property name="transactionManager" ref="transactionManager"></property> <property name="transactionAttributes"> <props> <!--配置事务的方法 --> <!-- 定义事务规则 定义当遇到Exception异常时 回滚,- 表示抛出该异常时并回滚,+表示即使抛出该异常事务同样要提交--> <!-- PROPAGATION_REQUIRED 支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 --> <prop key="add*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="update*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="insert*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="modify*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="delete*">PROPAGATION_REQUIRED,-Exception</prop> <!-- PROPAGATION_NEVER以非事务方式执行,如果当前存在事务,则抛出异常 --> <prop key="get*">PROPAGATION_NEVER</prop> </props> </property> </bean> </beans>

    hibernate.cfg.test.xml模板

    <hibernate-configuration> <session-factory> <mapping class="com.tgb.web.controller.entity.User"/> </session-factory> </hibernate-configuration>

    映射表的类

    //实体User映射到表T_USER @Entity @Table(name="T_USER") public class User { @Id //数据库中的主键生成器,值为uuid @GeneratedValue(generator = "system-uuid") @GenericGenerator(name = "system-uuid", strategy = "uuid") private String id; @Column(length=32) private String userName; @Column(length=32) private String age; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getId() { return id; } public void setId(String id) { this.id = id; } }

    springAnnotation-servlet.xml

    <!-- 注解扫描包 --> <context:component-scan base-package="com.tgb.web.controller" /> <!-- 开启注解 --> <mvc:annotation-driven/> <!-- 视图解析器--> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean>

    springAnnotation-core.xml 配置bean

    <beans> <bean id="userDao" class="com.tgb.web.controller.dao.UserDAO"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <bean id="userManagerBase" class="com.tgb.web.controller.service.UserManager"> <property name="userDao" ref="userDao"></property> </bean> <!--parent="transactionBese" 继承transactionBese(事务管理) --> <!--ref="userManagerBase"" 实现userManagerBase --> <bean id="userManager" parent="transactionBese"> <property name="target" ref="userManagerBase"></property> </bean> </beans>

    配置bean的原因:

    public class UserDAO implements IUserDAO { //<bean id="userDao" class="com.tgb.web.controller.dao.UserDAO"> // <property name="sessionFactory" ref="sessionFactory"></property> //</bean> private SessionFactory sessionFactory; public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } @Override public void addUser(User user) { sessionFactory.getCurrentSession().save(user); } } public class UserManager implements IUserManager { // <bean id="userManagerBase" class="com.tgb.web.controller.service.UserManager"> //<property name="userDao" ref="userDao"></property> //</bean> private IUserDAO userDao; public void setUserDao(IUserDAO userDao) { this.userDao = userDao; } @Override public void addUser(User user) { userDao.addUser(user); }

    controller

    @Controller @RequestMapping("/user") public class UserController { @Resource(name="userManager") private IUserManager userManager; @RequestMapping("/toAddUser") public String toAddUser(){ return "/addUser"; }
    转载请注明原文地址: https://ju.6miu.com/read-669074.html

    最新回复(0)