Spring大战Hibernate之声明式的事务管理 Spring配置文件: 添加事务管理类的bean: <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> &…
一.Java操作数据库的阶段. Java对数据库进行操作经历了三个阶段. 1.1操作JDBC阶段 这个阶段就是利用JDBC类来操作数据库.这个阶段出现了两个问题: 代码过度重复:在每一次数据库操作的是后都要编写相似的代码.实际上每一次这些代码有的是只是SQL语句改变但是还是得写一遍.让我想起第一次用.NET做机房收费系统的时候就写查询的时候除了SQL语句不一样以外其他都一样. 不能突出业务:整个代码都是数据库处理的代码,体现不出业务操作逻辑. 1.2封装JDBC阶段 这个阶段其实就是像.NET一…
点击项目右键->MyEclipse->Add Hibernate Capabilities 打开MyEclipse Hibernate Perspective(MyEclipse Hibernate 视图) <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN&q…
一.AOP注解开发 此处需要回忆一遍AOP的概念.简单的来说,AOP就是利用动态代理技术,做到不触动源代码但却扩展了功能.那么就需要一个被扩展的对象和一个“新的功能”,例如说给某类的saveUser方法增加输出日志需求,此时输出日志该事件就是一个“新的功能”.举这个例子的重点只是为了突出,AOP技术需要关注两个方面,一个是接受者,而另一个是输出点.要利用AOP,必然需要将这两个对象做出关联.而所谓AOP注解开发,就是如何将这两个对象建立关系. 当然,以上理解仅仅为个人的话语解读,不具有严谨的用词…
一:AOP基于AspectJ的注解开发 1,简单的实例: 1)引入相应的jar包 ​ 2)在配置文件里引入相关约束 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/con…
Spring的JDBC模板 Spring是JavaEE开发的一站式框架,对各种持久化技术都提供了简单的模板 ORM持久化技术 模板类 JDBC org.springframework.jdbc.core.JdbcTemplate Hibernate5.0 org.springframework.orm.hibernate5.HibernateTemplate IBatis(MyBatis) org.springframework.orm.ibatis.SqlMapClientTemplate J…
下面内容使用到的 jar 包下载 JDBC模板使用 入门 1.导包,如要导入 Spring 的基本开发包.数据库驱动包.Spring 提供的 JDBC 模板包,如下: 2.测试: @Test public void test(){ // 创建连接池对象 DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource(); driverManagerDataSource.setDriverClassName…
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6768298.html  一:需要事务的Session操作 Session操作中,查询类操作是不需要事务就能生效的,如get.query等. 而save.update.delete等操作,则需要提交事务才能生效. 二:DAO层事务管理的缺点 DAO层主要负责数据的持久化操作,因此,也是session操作的主要位置.我们一般在DAO层针对一个表定义增删查改操作的方法,一个方法一个功能.因此,如果在DAO进行事务…
一.乐观锁 Hibernate使用乐观锁来处理脏数据问题. 比如有这样一个制造脏数据的场景: 1.通过session1得到id=1的对象product1 2.在product1原来的价格基础上增加100 3.更新product1之前,通过session2得到id=1的对象product2 4.在product2原来的价格基础上增加100 5.更新product1 6.更新product2 但是最后product的价格只增加了100,而不是200. 二.在不使用乐观锁的情况下代码如下: packa…
站在持久化层的角度,一个java对象在它的生命周期中,可处于以下4个状态之一: 临时状态(transient):刚刚用new语句创建,还没有被持久化,并且不处于Session的缓存中. 持久化状态(persistent):已经被持久化,并且被加入到Session的缓存中. 删除状态(removed):不再处于Session的缓存中.并且Session已经计划将其从数据库中删除. 游离状态(detached):已经被持久化,但不再处于Session的缓存中. 看代码更清楚点: 代码 tx = se…