1、思路和想法。

目前理解到的,觉得是的,可能的,应该这样的………………

Spring的两大核心是IoC和AOP

Ioc:帮助实例化对象,加载到容器中,在注入到需要用到的地方。这样就可以减少在不同的方法/类中新建对象了。同时,实现类改变了(基于接口),在xml中改了就好。比较适合单例编程。那么我们将Hibernate常常用到的SessionFactory交给Spring。

AOP:与数据库打交道,事务管理是必须的,什么ACID之类的。那么AOP就比较适合了。

2、整合

继续在之前的工程加上spring的jar。

1)、Spring-3.2.0

2)、使用数据源。

选用dbcp

commons-dbcp-xxx.jar

commons-pool-xxx.jar

3)、SessionFactory

在spring的配置文件中,配置SessionFactory(交给Spring)管理。Spring配置文件这里命名为applicationContext.xml

 <!-- sessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<!-- 数据源 -->
<property name="dataSource" ref="dataSource" />
<!-- 注解的实体类 ,扫描包 -->
<property name="packagesToScan">
<list>
<value>com.xzw.ssh.pojo</value>
</list>
</property> <!-- sessionFactory的一些其他设置。 -->
<property name="hibernateProperties">
<props>
<!-- 通过getCurrentSession创建的session会绑定到当前线程 -->
<prop key="current_session_context_class">thread</prop>
<!--方言 -->
<prop key="dialect">org.hibernate.dialect.MySQLDialect</prop>
<!--输出sql -->
<prop key="hibernate.show_sql">true</prop>
<!-- sql格式化输出-->
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
</bean>

applicationContext

4)、mysql.properties

连接到数据库的基本属性。本测试放在classpath下的db文件

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/nwssh

jdbc.username=root

jdbc.password=root

5)、datasource的xml配置。

在applicationContext.xml加上。

 <!-- 加载配置文件 db/mysql.properties -->
<context:property-placeholder location="classpath:db/mysql.properties" /> <!-- 使用dbcp数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="maxActive" value="15" />
<property name="maxIdle" value="3" />
</bean>

加上部分

6)、测试SessionFactory

加上mysql的jbdc包,配置好database,就可以先测试一下SessionFactory是否能用了。

到目前的配置文件是

 <beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" 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.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">
<!-- 加载配置文件 db/mysql.properties -->
<context:property-placeholder location="classpath:db/mysql.properties" /> <!-- 使用dbcp数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="maxActive" value="15" />
<property name="maxIdle" value="3" />
</bean> <!-- sessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<!-- 数据源 -->
<property name="dataSource" ref="dataSource" />
<!-- 注解的实体类 ,扫描包 -->
<property name="packagesToScan">
<list>
<value>com.xzw.ssh.pojo</value>
</list>
</property> <!-- sessionFactory的一些其他设置。 -->
<property name="hibernateProperties">
<props>
<!-- 通过getCurrentSession创建的session会绑定到当前线程 -->
<prop key="current_session_context_class">thread</prop>
<!--方言 -->
<prop key="dialect">org.hibernate.dialect.MySQLDialect</prop>
<!--输出sql -->
<prop key="hibernate.show_sql">true</prop>
<!-- sql格式化输出 -->
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
</bean> </beans>

applicationContext

java测试代码

 public class H_A_S_Test {

     //得到spring容器
private ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml"); @Test
public void test1() throws Exception {
//得到SessionFactory
SessionFactory sessionFactory = (SessionFactory) applicationContext.getBean("sessionFactory"); Session session =sessionFactory.openSession(); User user = (User) session.get(User.class, "u1"); System.out.println(user.getUsername());
}
}

java测试代码

如果上面的测试能得到对应的User就成功了。

SSH整合 第三篇 Spring的加入的更多相关文章

  1. SSH整合 第四篇 Spring的IoC和AOP

    这篇主要是在整合Hibernate后,测试IoC和AOP的应用. 1.工程目录(SRC) 2.IoC 1).一个Service测试类 /* * 加入spring容器 */ private Applic ...

  2. 分析RAC下一个SPFILE整合的三篇文章的文件更改

    大约RAC下一个spfile分析_整理在_2014.4.17 说明:文章来源于网络 第一篇:RAC下SPFILE文件改动 在RAC下spfile位置的改动与单节点环境不全然一致,有些地方须要特别注意, ...

  3. Java进阶知识26 SSH整合(Struts2、Spring、Hibernate)

    1.我用到的jar包 2.整合实例 2.1.数据库建表语句 create database school; -- 创建数据库 use school; -- 使用school数据库 create tab ...

  4. SSH整合(Struts2+hibernate+spring)

    1.创建表 create table t_user( id int primary key auto_increment, username varchar(50), password varchar ...

  5. ssh整合之五struts和spring整合

    1.首先,我们需要先分析一下,我们的spring容器在web环境中,只需要一份就可以了 另外,就是我们的spring容器,要在我们tomcat启动的时候就创建好了(包括其中的spring的对象),怎么 ...

  6. Spring之旅第三篇-Spring配置详解

    上一篇学习了IOC的概念并初步分析了实现原理,这篇主要学习Spring的配置,话不多说,让我们开始! 一.Bean元素配置 1.1 基本配置 看一个最基本的bean配置 <bean name=& ...

  7. SSH整合 第五篇 struts2的到来

    struts2的好处,web层的显示,同时Action类相当于MVC模式的C.整合进来的话,是通过与Spring整合,减少重复代码,利用IoC和AOP. 1.struts-2.5.2.jar 以上是s ...

  8. ssh整合之三hibernate和spring整合

    1.拷贝我们的spring事务控制所需的jar包 2.在spring容器中配置我们的hibernateTemplate以及事务管理器 <?xml version="1.0" ...

  9. 从.Net到Java学习第三篇——spring boot+mybatis+mysql

    从.Net到Java学习第一篇——开篇 环境:mysql5.7 新建mysql数据库demo,然后执行如下sql脚本进行数据表创建和数据初始化: -- ------------------------ ...

随机推荐

  1. a,b = b,a 换值问题

    a = "hello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhe ...

  2. fm 讲解加代码

    转自: 博客 http://blog.csdn.net/google19890102/article/details/45532745/ github https://github.com/zhaoz ...

  3. do{}while() ;异常语句

    //while (true) //只要括号里面是true(正确的如:(1==1)),就会无限循环 //{ //} //do{}while() //不管while满足与否,首先先做一遍 //然后去看wh ...

  4. JavaScript实现AOP(面向切面编程,装饰者模式)

    什么是AOP? AOP(面向切面编程)的主要作用是把一些跟核心业务逻辑模块无关的功能抽离出来,这些跟业务逻辑无关的功能通常包括日志统计.安全控制.异常处理等.把这些功能抽离出来之后, 再通过“动态织入 ...

  5. 树莓派项目——基于树莓派的WIFI网络互传系统设计

    一 实验原理 所需硬件:树莓派3B,TP-LINK WiFi模块,笔记本电脑,网线 所需软件:Putty.远程桌面链接.python.cmd界面 树莓派3B是只有信用卡大小的微型电脑,其系统基于Lin ...

  6. java web 常用正则

    什么是 RegExp? RegExp 是正则表达式(Regular expression)的缩写,作用是对字符串执行模式匹配. 通常用于格式验证.正则替换.查找子串等 各种编程语言的正则表达式基本相同 ...

  7. git设置别名alias

    每次用git拉去版本库都很烦,特别是要从非origin源,非master分支, 例如 git pull gitlab mybranch ,这样很蛋疼. 1.写个sh去处理 2.可以通过git的别名设置 ...

  8. ScrollView listView gridView 之间的冲突问题

    在ScrollView中的listView gridView添加适配器之后添加//设置gridView整体的高度 public void setListViewHeightBasedOnChildre ...

  9. PHP下ajax跨域的解决方案之CORS

    由于安全的限制(同源策略,javascript只能访问同域名下的内容),如果需要进行跨域操作,那就免不了要进行跨域.   CORS(跨域资源共享,Cross-Origin Resource Shari ...

  10. (转载)Zab vs. Paxos

    原创链接:https://cwiki.apache.org/confluence/display/ZOOKEEPER/Zab+vs.+Paxos Is Zab just a special imple ...