摘要:带有切点的切面或者是不带有切点的切面配置一个类就要配置一段生成代理的代码,这样太麻烦了. 选中orderDao右键watch JDK动态代理是先创建被代理对象,然后在创建代理对象的时候传入被代理对象. 把目标对象传入ProxyFactoryBean生成代理. 基于后处理bean在生成类的过程中我就给
阅读全文
摘要:环绕增强功能是最强的,它相当于前置增强和后置增强. 这就是带有切点的切面
阅读全文
摘要:Person4不把整个方法给同步,只同步创建Person对象的那个方法. Person4比Person3的线程同步麻烦那么多,效率肯定会更高.因为Person4的下面这段代码永远都只会执行一次. 类似于Person3的person = new Person3();永远只会被执行一次. 懒汉式的三种写
阅读全文
摘要:Spring底层的代理的实现: 不带切点的切面是对类里面的所有的方法都进行拦截. 做Spring AOP的开发需要两个包:一个是AOP的包,一个是AOP联盟的包(因为规范是由AOP联盟提出来的). 用Spring开发不用自己手写代码生成代理.Spring是可以通过配置生成代理的. ProxyFact
阅读全文
摘要:JDK动态代理是有接口我给你创建一个类和你这个实现类是一样的, CGLIB不对实现接口的类生成代理,一个普通类也可以生成代理.CGLIB用继承的方式帮你生成代理对象.你父类有的方法我也有了,我想增强也OK了. 为什么要生成父类?因为CGLIB的机制是继承的方式,它得知道你要对谁去生成代理.设置回调跟
阅读全文
摘要:package cn.itcast.spring3; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; /** * JDK的动态代理的机制 * @author zhongzh * */ public class JDK...
阅读全文
摘要:横向抽取的机制其实就是代理机制.对UserDao生成一个代理类:UserDaoProxy.被代理对象和代理对象它俩实现相同的接口它俩肯定是平级的,这就是横向抽取的机制.如果这时候调用UserDao的任何一个方法(比如说add()方法)相当于执行代理对象中的某个方法,也就是说它得先经过我们的代理对象.
阅读全文
摘要:一个类能够看到另外一个类的属性和方法,那么这两个类是关联的.
阅读全文
摘要:运用面向对象的思想将加法运算封装起来. 如果不希望 Operation operation = new AddOperation(); new一个Operation那就使用简单工厂模式. 以下就是使用了简单工厂模式之后直接从工厂类里面获取AddOperation. Operation operati
阅读全文
摘要:Apple和Banana具有共同的父类Fruit。工厂:它能够创建其他类的实例。 专门创建一个类FruitFactory来创建其他类的实例.FruitFactory创建其他类的实例的方法是静态方法. 这就是简单工厂模式的实现. FruitFactory:工厂角色 Fruit:抽象角色 Apple、B
阅读全文
摘要:FruitFactory的第二种实现方式不符合开放封闭原则.对扩展开放,对修改关闭. 工厂方法模式完全符合开放封闭原则(OCP原则). 工厂方法模式的核心是抽象工厂类,简单工厂模式的核心是具体工厂类.工厂方法模式别名多态工厂模式. 开放封闭原则的开放:程序具有扩展性,封闭:以前的代码不需要修改. 工
阅读全文
摘要:如果AppleFactory里面包含两个方法一个方法生产北方的苹果一个方法生产南方的苹果,那么如果多了一个生产温室的苹果那就要修改AppleFactory的源码了,不符合开放封闭原则.所以那就可以用一个具体工厂负责生产一个产品族(比如南方的产品族). 抽象工厂模式非常符合OCP原则/开放封闭原则.从
阅读全文
摘要:类名 成员变量:属性 成员函数:方法 访问权限-属性名-属性的类型 访问权限-方法名-返回值,还可以传递参数列表. 继承类的类图 JAVA里面类的访问权限只有两种:package(默认的访问权限)和public.
阅读全文
摘要:为什么不要某人和陌生人直接说话呢就是避免某人和陌生人的耦合度比较高.要使这两个耦合变低才这样设计的. 依赖倒转原则是高层和底层模块依赖抽象模块.某人和抽象陌生人可以直接交互.有了里氏替换原则和依赖倒转原则,和抽象陌生人交互其实就可以与陌生人进行交互了. SomeOne紧密联系的是陌生人抽象.是一个抽
阅读全文
摘要:细节:实现层, 抽象不应该依赖于细节,细节应该依赖于抽象这一点没有违背,违背了高层模块不依赖于底层模块,两者都依赖于抽象这一点. 电脑:高层模块 主板、内存、硬盘:底层模块 JAVA语言特性:父类引用指向子类对象. 抽象层:MainBoard、Memory、HardDisk 高层业务逻辑:Compu
阅读全文
摘要:JAVA中一个非常重要的原则:多态. 从智能工具上来讲企鹅当然是属于鸟类,从程序设计上来讲企鹅它到底是鸟类吗? 传父类的地方可以用子类替换. 企鹅是鸟类吗?同样是大话设计模式里面提到的知识点. java里面的父类引用指向子类对象和里氏替换原则是极其类似的.父类引用指向子类对象同样也是多态的条件.多态
阅读全文
摘要:每一个职责都是一个变化的轴线,当需求变化时会反映为类的职责的变化.如果一个类承担的职责多于一个,引起它变化的原因就有多个. 如果一个手机玩游戏玩坏了,那么会影响它拍摄和网络摄像头、GPS等功能.功能多但不强,还不如就一个功能.
阅读全文
摘要:做出来的软件具有很强的扩展性,扩展并不是修改以前的源代码,而是在以前的代码之外添加新的功能. 重点是对扩展开放,对修改关闭. 银行业务员下有很多子类:负责存款的银行业务员,负责取款的银行业务员,负责转账的银行业务员. Client是进行模块的调用,不算模块的修改.除了客户端MainClass之外,其
阅读全文
摘要:AbstractClass的method1()和method2()相当于MakeCar的makeHead()、makeBody()以及makeTail(). 存在多个具有相同操作步骤的业务场景,MakeBus和MakeJeep都是这样的业务场景. 模板方法主要是步骤,抽象方法关注的是细节.而细节是由
阅读全文
摘要:Product:House Builder:HouseBuilder(工程队) ConcreteBuilder:PingFangBuilder、GongyuBuilder Director:组合的模式,包含Builder,包含工程队,由Director来指使工程队做事.组合不是聚合,Director
阅读全文
摘要:两个对象person1和person2,如果他们只有名字不同,其他属性相同,不想重复创建对象,想把person1复制一份作为person2,可以使用原型模式. 如果person2克隆person1,那么具有相同的值,修改的话只需要修改Name这一个属性就行.其他的属性都不用设置了,因为都是从pers
阅读全文
摘要:Command:Command. Client:MainClass 对于每一个行为都创建一个Command的实现子类:AppleCommand. //命令类必须包含调用方,是谁在卖,是Peddler在卖.所以命令类需要持有Peddler的引用. Invorker:执行Command对象.被调用者:P
阅读全文
摘要:改变对象的内部状态hour,然后判断内部状态而改变对象的行为.但是这样的设计是非常不合理的. Context:Person.用户对象类. 黑色菱形后面一条直线表示聚合,Context持有了State的一个引用. private State state;//持有了State类的一个引用. 整个判断还是
阅读全文
摘要:访问者设计模式是最难的设计模式. Object Structure:公园 Element:是一个抽象,可以是一个接口或者是抽象类.是公园的每一个部分的抽象. Concrete Element:实际的元素角色.公园的A部分或者是公园的B部分.accept()接待人. Visitor:抽象的访问者. C
阅读全文
摘要:客户端承担了太多的职责,保存对象内部状态的操作都是由客户端操作显然是不合理的.一般来说客户端MainClass的main方法里面的功能都不会很麻烦.如果Person类的内部增加了一个属性或者状态,客户端的main方法里面也要做相应的修改.客户端里面直接调用对象的方法都不会很多. Originator
阅读全文
摘要:容器类的职责太多了. Iterator迭代接口,JDK里面其实也提供了一个迭代接口.JDK里面已经很好地实现了这个迭代模式. ConcreteIterator:迭代器的具体实现类,这个实现细节已经被JDK隐藏了(如果你没有很好地研究过JDK的话是不知道这个迭代器的实现类的.). Collection
阅读全文
摘要:这是非责任链模式的代码.组装一辆汽车的应用场景. ConcreteHandler:CarHeadHandler.java、CarTailHandler.java、CarBodyHandler.java Handler:CarHandler.java Hander有一条线是对自身的引用. 车头持有车身
阅读全文
摘要:类之间的交互行为被统一放在Mediator的对象中. 古代的媒婆,婚姻中介. 类之间存在交互行为.Man里面调用了Woman的一个方法.Woman里面调用Man的一个方法.有人会说它们都是一个公共方法,是Person里面的.这里比较特殊.Man调用了Woman,Woman同样也调用了Man.Pers
阅读全文
摘要:学过编译原理的话应该对文法有一个理解.编译原理里面有对文法的解释. 解释器模式在程序开发不是很常用,但是也要有一个浅显的认识.如果实在不会就不用深究,暂时有个初步的认识即可. Context就是文法,AbstractExpression是表达式解释器的一个抽象,Interpret(Context)传
阅读全文
摘要:笔记本电脑有一个电源适配器,笔记本的工作电压是18V或者是20V.家常用电是220V. 应用场景:客户端需要调用一个组件,但是这个组件可能还不大成熟.以后随时可能替换成另外一个组件.客户端通过适配器(Adapter)调用外部组件(Current)的方法,而且客户端直接调用外部组件(Current)的
阅读全文
摘要://违反了开放封闭的原则 //如果增加了一种发动机规格,Bus又要修改了.Car的代码也要修改.//另外如果接口定义的发动机规格Bus没有,为了保持接口的统一性不得不给Bus一个空的实现.这也是非常不好的. Car(抽象)持有Engine(发动机)(行为)的引用,这就是聚合.Car和Engine都有
阅读全文
摘要:组合模式的核心是树,数据结构里面的树. 接口:Component.Component是斜写的,在UML里面斜写就表示是一个抽象类.add()增加节点,remove()移除节点,getChild()获得它的子节点. Component可以是抽象类,也可以是一个接口,Leaf是叶子,Composite是
阅读全文
摘要:Facade把子系统的功能都包含进来了,这些子系统都有一个doSomething(),来给Client1和Client2调用的. 缺点是客户端是直接调用这些功能模块的.
阅读全文
摘要:我们去买书可以看做的是代理模式.书都是由出版社印刷出来的.但是我们买书不会去出版社买,而是通过出版社的代理:书店.我们看作是客户端,当当是代理对象,出版社是被代理对象. 这是代理模式的意义. 这是UML的结构图,一个类图. Client是客户端.Subject是抽象主题角色.它是真实主题与代理主题的
阅读全文
摘要:享元,享,就是分享,元,就是数据.共享数据减少内存占用. Flyweight:轻量级.享元模式的核心就是享元工厂.享元模式在后面Java EE学到的自定义连接池的原理是一样的. 再做一个应用。 抽象享元角色Person 具体享元角色Teacher
阅读全文
摘要:Strategy:算法的抽象,比如说加密算法. ConcreteStrategy:算法的具体实现,比如说MD5加密,或者是MDS加密. Context是由外部环境决定的,意思是Context是由客户决定的. 再做一个例子,商家要促销,打八折,或者是满一百送二十,满两百送多少... 两种算法的公共部分
阅读全文
摘要:package cn.itcast.factory; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.lang.reflect.Constructor; import java.lang.reflect.Field; impo...
阅读全文
摘要:package cn.itcast.observer; //人 是要根据天气做出相应的处理的。"晴天","雾霾","刮风","冰雹","下雪" //天气怎么来呢? //public class Emp { public class Emp implements Weather{ String name; public Emp(String name) { ...
阅读全文
摘要:以前我们在web层里面去调Service再在Service里面去调DAO是一路new过去的,在web层里面new Service,然后在Service里面new DAO.每次你都需要主动去找这个对象。但是现在Spring把这个对象弄好了交给你了给你送过来了。你想用它就用一下。你不需要去主动找那个类了
阅读全文
摘要:package cn.itcast.test; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfig...
阅读全文
摘要:整合Spring开发环境只需要引入spring-web-3.2.0.RELEASE.jar这个jar包就可以了,因为它已经帮我们做好了. Spring整合web开发,不用每次都加载Spring环境了。
阅读全文
摘要:什么情况下使用XML,什么情况下使用注解?又有XML,又有注解,开发的时候使用哪种? XML:结构清晰,配置麻烦. 注解:简单, 它俩的结合点在属性注入上. 两种方式结合:一般使用XML注册Bean,使用注解进行属性的注入.
阅读全文
摘要:这个类已经可以由Spring控制反转了,那么属性呢?属性分为普通属性和对象属性两部分。 JSR是一个组织,和W3C一样是定义一些标准的.它里面也定义了一歌注解,Spring对这个注解也是支持的.其实这个@Resource注解和@AutoWired以及@Qualifier整合到一起它俩的功能是类似的。
阅读全文
摘要:Struts 2和hibernate也使用注解,但是使用注解在以后的开发中应用不多。但是可以说在整合的时候如何进行注解开发。在Spring中,注解必须会玩。
阅读全文
摘要:配置文件内容过多修改起来维护起来很麻烦。Struts 2可以在总的配置文件中引入其他的配置文件。这是一种办法。第二种办法在加载配置文件的时候,里面可以一次性传多个。
阅读全文
摘要:Spring2.5提供了名称空间p注入属性的方式,Spring3.几提供了SpEL属性注入的方式。
阅读全文
摘要:xmlns="http://www.springframework.org/schema/beans"是默认的名称空间. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"是带名字的名称空间.
阅读全文
摘要:package cn.itcast.spring3.demo5; public class Person { private String name;//人的名字 private Car2 car2;//和有一辆车 public void setName(String name) { this.name = name; } p...
阅读全文
摘要:后处理bean,如果是返回bean,那么什么都不做直接把这个类原封不动地给你返回回去。 在它执行一些逻辑方法的时候对它进行逻辑增强,比如说进行时间监控,权限管理,日志的记录等等。 要做肯定是对正常的类增强才可以,因为正常你就调用这个类的add或者find()方法了。 增强的方法:继承、装饰者模式、动
阅读全文
摘要:可以配置Bean的这个类的初始化和销毁的方法。 如何销毁这个bean?销毁必须得手动地关闭掉容器才行。而且销毁必须是在scope="singleton"下才有效。因为如果你scope="prototype"它就会生成N多的实例。它就不知道销毁哪个实例了。 Bean的生命周期。在Spring创建这个B
阅读全文
摘要:访问的路径的是/login.id不允许出现特殊的字符。/是特殊的字符。Struts 2已经没有/,action的名字已经不带/了。现在的开发中一般使用id这个属性即可。 这个类在被Spring创建的时候是一个单例的还是一个多例的? reuqest和session都是在web开发中使用.它们的区别是w
阅读全文
摘要:Spring是自动帮我们创建对象的,有几种创建Bean的方式呢? 构造方法实例化:(默认无参数)其实就是反射new Instance(). 静态工厂实例化: 实例工厂实例化: 一般不会改变它实例化的方式。其他两种了解一下即可。
阅读全文
摘要:ApplicationContext怎么知道它是一个工厂呢? BeanFactory也可以做刚才那些事情,只不过ApplicationContext对它有扩展。ApplicationContext间接继承BeanFactory。 ApplicationContext继承了很多接口, 其中接口Hier
阅读全文
摘要:Spring的工厂类ApplicationContext有两个子类:ClassPathXmlApplicationConext和FileSystemXmlApplication都可以用来加载配置文件。 Ctrl+T查看ApplicationContext的子类: 如果把ApplicationCont
阅读全文
摘要:在IOC中有一个DI的概念。 IOC是控制反转,DI是依赖注入。现在编写的类里面是没有其他的属性的。如果你学过像UML设计的话, 电视没有遥控器,按按钮也可以,但是紧密的那种,像人和四肢,人如果没有了四肢人就废了。部门和领导,部门没有领导,照样可以存在,这种属于松散的。但是人和脑袋,这种关系就是紧密
阅读全文
摘要:Spring的核心是IOC和AOP,其他的什么像SpEL都是对IOC的支持。 Spring里面的web指的是它可以使用Spring MVC。 集成指的是整合其他的框架。 schema是所有配置文件的约束。可以在这里引入schema。 Spring的开发都需要引入哪些JAR包呢? bean、core、
阅读全文
摘要:Action里面调Service,Service里面调DAO,在Action里面new一个Service,在Service里面new一个DAO。有了Spring之后可以不用new对象了。AOP里面有很多术语或者是思想是比较难理解的。除了这些之外呢就没有什么特别复杂的地方了。 Spring3.2是Sp
阅读全文
摘要:如果没有在Customer.hbm.xml中配置级联删除,删除客户的时候默认会把订单表的cno字段设置为null,但是客户关联的订单记录还在,并不会删除掉. JS很容易出错,还是得使用谷歌浏览器调试才行.
阅读全文
摘要:反向工程:先创建表,创建好表之后,就是持久化类和映射文件可以不用你写,而且你的DAO它也可以帮你生成。但是它生成的DAO可能会多很多的方法。你可以不用那么多方法,但是它里面提供了这种的。用hibernate,必须得用myeclipse里面的这种自动生成的工具。其实myeclipse它里面对Strut
阅读全文
摘要:查询缓存是比二级缓存功能更强大的缓存.必须把二级缓存配置好之后才能用查询缓存,否则是用不了的.二级缓存主要是对类的缓存/对象缓存.查询缓存针对对象也是可以的(因为功能比二级缓存更强大),而且还可以针对类中的属性. select cname from Customer.这种二级缓存是缓存不了的.二级缓
阅读全文
摘要:二级缓存区:类缓存区,集合缓存区,更新时间戳区. 它会记录一个时间T1.其实在我们查询之后它会记录一个时间.假设时间叫做T1.就是你查询完之后的当前时间是T1.当我们自己手动在下面做了一个更新之后,它会在更新时间戳的区域中去记录一个你更新这条记录的时间T2. 另开一个事务,又要去做查询了,从我们二级
阅读全文
摘要:get()和load()方法既可以向一级缓存区放数据,也可以向二级缓存区放数据。这是查询一个的情况。要是查询所有呢?注意, // 查询所有.Query接口的list()方法. // list()方法会向二级缓存中放数据,但是不会使用二级缓存中的数据. //list()方法没有使用二级缓存的数据. 没
阅读全文
摘要:所以说要经常检查hibernate3的核心配置文件hibernate.cfg.xml. Hibernate: select customer0_.cid as cid0_0_, customer0_.version as version0_0_, customer0_.cname as cname0
阅读全文
摘要:一级缓存存放的是对象的地址。把对象的地址缓存下来了。二级缓存里面存放的是对象的散装数据。你再去获取的时候,因为一级缓存的生命周期结束了,它会从二级缓存中获取。从二级缓存中获取,因为它又会得到一个对象。它会把二级缓存中的散装数据拿出来重新组装成一个Customer对象。它相当于是这里又Custoerm
阅读全文
摘要:如果你没有同一个session开启事务的话,那它两是一个独立的事务。必须是同一个session才有效。它给我们提供一个本地线程的session。这个session就保证了你是同一个session。其实它底层用的就是ThreadLocal。 什么是JTA事务?就是你底层操作的时候可能操作的不是同一个数
阅读全文
摘要:什么是丢失更新呢?有一条数据你查出来了,查出来之后有一个事务A和一个事务B也都过来操作同一个记录。A拿到这条记录之后可能改它的某一个值了,B拿到这条记录之后改它的另外一个值。这个时候A事务提交已经提交到数据库了,假设A改的是工资已经提交到数据库了。如果B事务回滚,将A提交的数据覆盖了;或者是B提交事
阅读全文
摘要:演示hibernate如何产生丢失更新的 丢失更新是怎么玩的?首先两个事务先都把它查出来。 A事务里面去修改的数据没了,被B事务覆盖掉了。这是被B事务提交覆盖,B事务回滚也能覆盖。这就是丢失更新的效果。 悲观锁使用了数据库的锁机制, 这就是悲观锁的解决方案,但是这种方式并不是特别的好。因为这条记录被
阅读全文
摘要:package cn.itcast.test; import java.util.List; import org.hibernate.Hibernate; import org.hibernate.Session; import org.hibernate.Transaction; import org.junit.Test; import cn.itcast.utils.Hi...
阅读全文
摘要:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hi
阅读全文
摘要:你在做查询的时候它可以帮你关联出它的一些相应的关联对象。那么它关联这个对象的时候是在什么时候发送的这些语句以及它是如何把这些数据拿出来的? 知道延迟检索是怎么回事了,而且它也能够产生这个代理对象。当你用这个代理对象的某个属性的时候它才会初始化。那么代理对象由谁来生成呢?由E:\北风网\hiberna
阅读全文
摘要:图二 离线条件查询 Struts 2是web层的框架。session得在dao层才有。有的时候这些数据是没在你的对象里面的。像是否上传简历。这个字段不在我的数据库里面。例如是否上传简历这个条件不在我们的数据库里面。你只是通过你的数据库里面的某个字段判断它是否为空而已。假设这几个字段都没在你的对象(U
阅读全文
摘要:返回的是一个List集合,这个List集合的泛型是一个Object数组。最后会拿到一个里面放Object数组的List集合。 HQL内连接查询,发出SQL语句查询出来的结果集被Hibernate封装成Object数组(Object[])的集合。所以不会产生重复数据。但是必须得是主表对应的类Custo
阅读全文
摘要:排序之后是分页查询。 检索单个对象 还可以进行参数的绑定。 HQL的参数绑定,按参数名称绑定或者是按参数位置绑定。 还可以用投影的操作,投影的操作是只查询这里面的某几个属性。只查询某一个属性,查询多个属性,查询完以后还把这些属性装到一个实体类对象里面那你就用投影这种形式。 模糊查询
阅读全文
摘要:连接池时间长不用空闲着,dbcp是不回收的,性能可能有些问题。c3p0是可以自动回收。实际开发中c3p的生产力比dbcp强,性能上更强。
阅读全文
摘要:BasicDataSoureFactory源码
阅读全文
摘要:我们写的是连接池吗?Connection对象绝对不能关。现在写的玩意不是连接池。因为现在讲的是JDBC,连接池也是JDBC里面的,人家那是SUN公司定义的标准。标准,你那不是标准。既然是标准,你做连接池得符合人标准。DataSource才是数据源/连接池。你要做一连接池必须实现这接口,所有的连接池必
阅读全文
摘要:数据源在软件编程行业有两种概念:一种数据源指的是存储数据的源头(数据库啊文件啊叫数据源),一种指的是连接池(连接池的英文单词叫做DataSource,直译就是数据源)。数据源可以指数据库,也可以指连接池。
阅读全文
摘要:乐观锁是使用版本字段,悲观锁是使用数据库底层的锁机制。mysql的类型timestamp(时间戳)有一个特点:插入数据不用管我,我取系统当前默认值。timestamp插入时间会记录,修改时间也会记录。这个字段就有这样一个特点,利用它本身可以改变的这样一个特点,解决丢失更新的问题。 悲观锁会锁记录,乐
阅读全文
摘要:共享锁在一条记录上是可以加多个的,共享嘛。排它锁的意思是指这条记录上如果有任何其他的锁我排它锁是加不上的,有了排它锁其他锁也是加不上的,唯一的。比如说现在我的记录上没锁,加了排它锁其他人使用不了,我这排它锁没完事。如果这条记录上已经有共享锁了,再加排它锁加不了,只能在上面加一种锁。 A事务在用共享锁
阅读全文
摘要:其实以前写的每条SQL语句都是有事务的,因为它默认的事务是autocommit=on(自动事务)。mysql的autocommit是on,oracle的autocommit是off。
阅读全文
摘要:ThreadLocal是一个容器/集合,是一个Map集合。不管你跨多少层,只要你是同一个线程就可以取出来。Service和Dao是同一个线程。Service第一次调用JdbcUtils.getConnection()方法,把Connection对象装入ThreadLocal容器,当Dao层第二次和第
阅读全文
摘要:要点击对应PID的进程右键转到服务停止才行。
阅读全文
摘要:设置数据库事务隔离级别特殊需求才有,后面很少用。因为数据库本身是事务隔离级别的,mysql的事务隔离级别是Repeatable read,可以解决脏读和不可重复读。不用设置,人家数据库是有事务隔离级别的。这里介绍是说真正要改怎么改。
阅读全文
摘要:开两个cmd窗口,相当于两个事务。 read-uncommitted这种级别是解决不了任何问题的,它什么情况都能出现。刚才演示了脏读,再演示就出现了不可重复读。 read-committed隔离级别能解决脏读问题。 read-committed是解决了脏读的问题,但是还是出现了不可重复读的问题。 可
阅读全文
摘要:Hibernate: insert into Customer (cname) values (?)Hibernate: insert into orders (addr, cno) values (?, ?)Hibernate: insert into orders (addr, cno) val
阅读全文
摘要:clear():直接清空一级缓存的所有对象。evict(Object obj):清空一个对象。flush():控制你的刷出的时机。refresh(Object obj);将你的数据查出来把一级缓存覆盖掉。 刷出的时机是有一个默认值的,默认值是在做某些查询的时候或者是事务提交或者是你手动调用flush
阅读全文
摘要:1.在网上找了好久,今天终于解决了,如果你的myeclipse自动生成的添加hibernate3jar包时,依靠通常的方法是无法关联其相应版本的源代码的,就是你在编写代码是,按住ctrl + hibernate类名查看源码,选择Attach Source ,选择你解压的源码目录,当你点击OK时,没有
阅读全文
摘要:SessionImpl里面有很多的Java集合,很多java集合才构成了一级缓存。一级缓存里面有一个非常特殊的区域叫做快照区。SessionImpl实现了Session接口,有很多Java集合(包括Map),才构成了它的一级缓存。持久态对象能自动更新数据库完全依赖了它里面的快照区。快照区相当于把你的
阅读全文
摘要:hibernate内置有一个c3p0,不用引入c3p0的jar包也行。 现在其实可以不用去创建表和实体类。因为hibernate可以自动帮我们生成。只要把映射建好了它就可以自动帮我们生成。 创建实体类和对应的映射。 一运行java项目hibernate3_day02的工具类/hibernate3_d
阅读全文
摘要:持久态对象一个非常重要的能力:自动更新数据库。
阅读全文
摘要:数据源:文件和数据库。从内存中获取,不用去数据库发送SQL语句查询了。缓存技术是hibernate的一个优化的手段。Session结束了,一级缓存就没了,就销毁了。SeesionFactory没了,二级缓存就没了,就销毁了。通常它是可以在多个session中共享数据的。一级缓存是自带的,不可卸载的。
阅读全文
摘要:什么是相关子查询? 这是一个子查询,子查询本身又是一个多表查询。where不能用组函数,但是可以用字符函数instr()。除了order by排序没有考,查询语句的所有内容都考了。这个题有点难度。 今天下午新的内容:存储过程,函数和触发器。这三个也是数据库的对象。一共要学习十个数据库的对象:表,视图
阅读全文
摘要:查询是没有触发器的。trigger是一个数据库的对象。PL/SQL程序是在我插入之前执行还是在插入之后执行?触发器类似于java中的监听器。 监听插入操作,执行一段PLSQL程序。 禁止在非工作时间插入数据,这就是复杂的安全性检查。 可以用触发器做审计:国家审计局每年做什么事情?就是看你这个单位有什
阅读全文
摘要:实际上数据字典它就是表。这种表比较特殊,给它取个名字叫做数据字典。既然是表的话,它就是要存数据的。它存的是这些数据:用户有哪些权限,用户创建了哪些表,用户能够访问哪些表,这种信息跟员工表、部门表没有关系。它反映的是用户本身的状态、本身的信息。这种信息在oracle数据库里面存储在一种特殊的表里面,这
阅读全文