[web工程]集成hibernate

返回:[web工程]Struts2+Spring3.1+Hibernate3.6的集成

上一步:[web工程]集成spring

集成hibernate

 

  1. 创建数据库,脚本见:docs/db/mysql目录
    create table APP_USER (
    	id int,
    	name varchar(100),
    	password varchar(100)
    ) engine = innodb default charset = utf8 comment '系统用户';
    alter table APP_USER add constraint PK_APP_USER primary key (ID);
    alter table APP_USER change id id int auto_increment;
    create index IND_APP_USER_NAME ON APP_USER(name);
     
  2. 复制jar到WEB-INF/lib目录,并添加到java build path
    1. hibernate相关:
      hibernate-jpa-2.0-api-1.0.0.Final.jar
      hibernate3.jar
      jta-1.1.jar
      dom4j-2.0.0-ALPHA-2.jar
      commons-collections-3.2.1.jar
      antlr-2.7.7.jar
       
    2. spring相关:
      aopalliance.jar
      org.springframework.orm-3.1.0.M1.jar
      org.springframework.transaction-3.1.0.M1.jar
      org.springframework.jdbc-3.1.0.M1.jar
       
    3. jdbc相关:
      c3p0-0.9.1.2.jar
      mysql-connector-java-5.1.13-bin.jar
       
  3. 创建User实体类和配置文件hbm
    1. User.java
      package org.skzr.demo.model;
      
      import java.io.Serializable;
      
      /**
       * 系统用户
       * @author <a href="mailto:skzr.org@gmail.com">skzr.org</a>
       * @version 1.0.0
       */
      public class User implements Serializable {
      	private static final long serialVersionUID = 1L;
      	/** 唯一标识 */
      	private Integer id;
      	/** 用户名 */
      	private String name;
      	/** 密码 */
      	private String password;
      	
      	/**
      	 * @return id
      	 */
      	public Integer getId() {
      		return id;
      	}
      	/**
      	 * @param id id
      	 */
      	public void setId(Integer id) {
      		this.id = id;
      	}
      	/**
      	 * @return name
      	 */
      	public String getName() {
      		return name;
      	}
      	/**
      	 * @param name name
      	 */
      	public void setName(String name) {
      		this.name = name;
      	}
      	/**
      	 * @return password
      	 */
      	public String getPassword() {
      		return password;
      	}
      	/**
      	 * @param password password
      	 */
      	public void setPassword(String password) {
      		this.password = password;
      	}
      }
      
       
    2. hbm文件
      <?xml version="1.0"?>
      <!DOCTYPE hibernate-mapping PUBLIC 
      	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
      	"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
      <hibernate-mapping package="org.skzr.demo.model" default-lazy="false">
      	<class name="User" table="APP_USER">
      		<id name="id"/>
      		<property name="name" />
      		<property name="password" />
      	</class>
      </hibernate-mapping>
       
  4. 改写spring配置文件applicationContext.xml,创建配置文件:common.properties和init.properties说明见:docs/项目说明
    applicationContext.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:aop="http://www.springframework.org/schema/aop"
    	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-3.0.xsd
    		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
    		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    
    	<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    		<property name="ignoreResourceNotFound" value="true" />
    		<property name="fileEncoding" value="UTF-8" />
    		<property name="locations">
    			<list>
    				<value>classpath:common.properties</value>
    				<value>classpath:init.properties</value>
    			</list>
    		</property>
    	</bean>
    	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    		<property name="driverClass" value="${jdbc.driverClass}" />
    		<property name="jdbcUrl" value="${jdbc.url}" />
    		<property name="user" value="${jdbc.username}" />
    		<property name="password" value="${jdbc.password}" />
    		<property name="maxPoolSize" value="${jdbc.maxPoolSize}" />
    		<property name="acquireIncrement" value="${jdbc.acquireIncrement}" />
    		<property name="initialPoolSize" value="${jdbc.minPoolSize}" />
    		<property name="minPoolSize" value="${jdbc.minPoolSize}" />
    		<property name="maxIdleTime" value="${jdbc.maxIdleTime}" />
    		<property name="autoCommitOnClose" value="${jdbc.autoCommit}" />
    		<property name="checkoutTimeout" value="${c3p0.checkoutTimeout}" />
    		<property name="maxIdleTimeExcessConnections" value="${c3p0.maxIdleTimeExcessConnections}" />
    	</bean>
    	
    	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    		<property name="sessionFactory" ref="sessionFactory" />
    	</bean>
    	<tx:annotation-driven transaction-manager="hibernateTransactionManager"/>
    	
    	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    		<property name="dataSource" ref="dataSource" />
    	</bean>
    	<bean id="jdbcDaoSupport" class="org.springframework.jdbc.core.support.JdbcDaoSupport" abstract="true">
    		<property name="jdbcTemplate" ref="jdbcTemplate" />
    	</bean>
    	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    		<property name="dataSource" ref="dataSource" />
    		<property name="hibernateProperties">
    			<props>
    				<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
    				<prop key="hibernate.dialect">${hibernate.dialect}</prop>
    				<prop key="hibernate.jdbc.fetch_size">${hibernate.jdbc.fetch_size}</prop>
    				<prop key="hibernate.jdbc.batch_size">${hibernate.jdbc.batch_size}</prop>
    				<prop key="hibernate.connection.autocommit">${jdbc.autoCommit}</prop>
    				<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
    			</props>
    		</property>
    		<property name="mappingLocations">
    			<list>
    				<value>${hibernate.mappingLocations}</value>
    			</list>
    		</property>
    	</bean>
    
    	<bean id="loginAction" class="org.skzr.demo.action.LoginAction" scope="prototype"/>
    	
    	<context:component-scan base-package="org.skzr.demo"/>
    </beans>
    
     
  5. 创建DAO和Service,改写Action实现数据库验证逻辑
    1. 这里很多地方都用到了注解的方式来注入bean
    2. LoginAction实际对于xml文件中配置的bean id=loginAction并未配置AppService,实际上这个阿扁跑Service是通过注解来自动注入的,是一种xml和注解混合的方式
  6. 运行登录页面看看效果
  7. 完整程序demo下载分卷压缩1,分卷压缩2Good luck ^ ^
主要内容:本文详细介绍了一种QRBiLSTM(分位数回归双向长短期记忆网络)的时间序列区间预测方法。首先介绍了项目背景以及模型的优势,比如能够有效利用双向的信息,并对未来的趋势上限和下限做出估计。接着从数据生成出发讲述了具体的代码操作过程:数据预处理,搭建模型,进行训练,并最终可视化预测结果与计算分位数回归的边界线。提供的示例代码可以完全运行并且包含了数据生成环节,便于新手快速上手,深入学习。此外还指出了模型未来发展的方向,例如加入额外的输入特性和改善超参数配置等途径提高模型的表现。文中强调了时间序列的标准化和平稳检验,在样本划分阶段需要按时间序列顺序进行划分,并在训练阶段采取合适的手段预防过度拟合发生。 适合人群:对于希望学习和应用双向长短时记忆网络解决时序数据预测的初学者和具有一定基础的研究人员。尤其适用于有金融数据分析需求、需要做多一步或多步预测任务的从业者。 使用场景及目标:应用于金融市场波动预报、天气状况变化预测或是物流管理等多个领域内的决策支持。主要目的在于不仅能够提供精确的数值预计还能描绘出相应的区间概率图以增强结论置信程度。 补充说明:本教程通过一个由正弦信号加白噪构造而成的简单实例来指导大家理解和执行QRBiLSTM流程的所有关键步骤,这既方便于初学者跟踪学习,又有利于专业人士作为现有系统的补充参考工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值