
开发语言
柳波
这个作者很懒,什么都没留下…
展开
-
Hibernate性能优化
Hibernate作为一个ORM框架,考虑其优化要从考虑循环和发出的sql语句入手。主要体现在session使用,lazy使用,outjoin使用,batch-size使用,下面具体介绍1、对于session使用,应该提供一个工具类用于获取session,这样封装dao和原创 2011-10-17 20:59:46 · 671 阅读 · 0 评论 -
WebLogic10.3与hibernate3.0冲突解决方法
在运行过程中出现 ClassNotFoundException: org.hibernate.hql.ast.HqlToken 错误weblogic异常退出。 原因: Hibernate3.0 采用新的基于ANTLR的HQL/SQL查询翻译器,在Hibernate的配置文件中, hibernate.query.factory_class属性用来选择查询翻译器。原创 2012-04-18 15:44:39 · 1157 阅读 · 4 评论 -
Hibernate在集群中应用
在集群设计和开发过程中,我们必须要考虑并发问题。常见的主要涉及到添加,更新,删除。涉及Oracle数据库,hibernate乐观锁,唯一性约束,事务,mvc下面针对上述操作举例说明如何考虑并发问题和hibernate的使用方式:我们首先要了解一个需求,在所有时刻在一个分支机构下只能有一个打印机是可以使用的,而且打印机名称不能重复1、添加: 如果clusterA和clu原创 2011-12-06 00:54:39 · 1390 阅读 · 2 评论 -
HttpSession理解
Session是J2EE协议中五个对象之一,其它四个为Request, Response, Cookie, Application。下面对session做一个说明。 Session在服务器中产生,由web服务器维护其生命周期,例如Tomcat, JBoss, Weblogic等,它们都实现了J2EE协议,虽然在创建session时,略有差别但是都遵循J2EE协议。下面从J2E原创 2011-09-02 00:57:14 · 1278 阅读 · 4 评论 -
Spring MVC流程解析
Spring MVC 简介 Spring MVC是Spring的后续产品,也可以说是Spring的子集,其主要体现在视图层的MVC。本文对Spring MVC做一个较为详细的说明,后续会比较其优缺点。其中最为明显的一点为:其入口为一个Servlet不同于Struts2为一个Filter,这样在速度上有明显的优势,但缺点就是会导致多线程问题。 M为原创 2013-03-10 22:37:00 · 4447 阅读 · 2 评论 -
Quartz调度器堵塞原理和解决
Quartz 调度器以多线程的方式执行调度任务JobDetail,缺省线程池大小为10,也就是说若调度器中已有10个Job在工作(线程没有结束),那么即使有JobDetail到了被触发的时间,新的JobDetail不会被执行,也就是说阻塞的条件是,调度器中正在运行的JobDetail数量达到了设定值10。 举一个具体的例子:a. 单一Job 配置:JobA 触发时间转载 2012-03-22 14:45:29 · 1549 阅读 · 3 评论 -
Spring注入方式的分类和比较
构造函数注入即通过构造函数完成依赖关系的设定。如下代码:public class DIByConstructor { private final DataSource dataSource; private final String message; public DIByConstructor(DataSource ds, String msg) { this.dataSour原创 2012-04-26 22:51:03 · 1149 阅读 · 4 评论 -
SpringAOP
spring aop Aspect:切面: 举个形象的例子,就像我们在高速上卡车,沿着笔直的线路在走,入口处我们要经过一个收费站横着将我们的道路挡住,出口处也有一个收费站横着将我们的道路挡住,在入口处我们要交费,否则不允许进入,在出口处我们也要交费否则不允许出去,那么这两个收费站就是我们的切面。就像我们的程序执行一样,在一条线上走的时候,中间就会切入各种的业原创 2011-12-30 00:55:08 · 1363 阅读 · 4 评论 -
Spring配置SessionFactory
Spring的核心模块之一为依赖注入,普遍使用的为Set方式注入,那么下面将借助该方式配置数据源和SessionFactory。 直接引用hibernate.cfg.xml配置文件 这种方式需要提供hibernate.cfg.xml配置文件,在其中构造sessionFactory,并且持久层类的映射也在改文件配置,这步操作和Spring没有任何关系。产生关原创 2012-04-30 21:02:08 · 3431 阅读 · 3 评论 -
Hibernate---inverse,cascade总结
日常项目中,我们用的比较多的是many-to-one模式,因此做了上述的一个总结。其实那只是hibernate的特性和使用规则,真正项目中要看如何灵活配置和应用。可以从业务需求,代码性能和代码量上考虑。对于业务需求,比如在一些应用中,我们提供了删除用户和部门的功能但是实际要求是当删除部门时,不能将用户的数据真正删除掉,那么此时就要考虑,在部门那一端,不能设置cascade=delete或者原创 2011-09-05 23:49:59 · 680 阅读 · 0 评论 -
Hibernate---inverse,cascade(3)
更新分支机构:1、设置inverse=true cascade=none,更新代码如下: session = HibernateSessionFactory.currentSession(); tx = session.beginTransaction(); BranchInfo branchInfo = (BranchInfo) session.load(Branch原创 2011-09-05 23:21:05 · 710 阅读 · 0 评论 -
阶梯式使用SpringMVC+MyBatis
概述 对于SpringMVC的使用,上一篇文章已经做了说明,并上传了Demo,大家可以下载下来练习指教。这篇文章将由浅入深的集成MyBatis,并给出可以运行的Code。 MyBatis基础条件 下载MyBatis开发包,将其核心包和lib下所有包拷贝到项目lib目录,这些包在之后都会用到,同时添加到classpath下。下载地址为:http://cod原创 2013-04-08 22:40:34 · 4087 阅读 · 4 评论 -
Hibernate映射mysql问题 one-to-one
当我们使用hibernate的一对一映射,配置mysql数据库表时:两表的配置文件如下:1、tseal: "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> table="tseal"原创 2011-11-25 00:12:46 · 976 阅读 · 0 评论 -
Hibernate小知识
Hibernate知识:1、flush作用 Session.flush用于清理临时缓存,发出sql语句,但不提交事务2、uuid主键生成策略,加入session管理就会出现id, 此时如果调用session.evict会清空持久化上下文,persitentcontext, 当事务提交时对比镜像查看临时缓存中是否有数据,如果有那么发出sql语句清空临时缓存,原创 2011-12-24 14:10:31 · 687 阅读 · 1 评论 -
Hibernate---inverse,cascade(1)
背景:项目中长期使用,却并没有整理,抽出零碎时间将其整理如下,以供大家参考。 首先对下面两个类做一个说明:seal对象,BranchInfo对象,两者是多对一关系,一个分支机构可以有多个seal,一个seal属于一个分支机构。UML图如下: Hibernate映射文件如下:BranchInfo.hbm.xml "-//Hibernate/Hibern原创 2011-09-05 22:03:59 · 862 阅读 · 0 评论 -
Hibernate映射mysql问题 one-to-one
对于One-to-One映射,当我们需要懒加载的时候需要如下配置:我们期望当查询tseal时能够懒加载tsealdata,在seal的hbm文件中: class="com.bjSealData" cascade="save-update" lazy="proxy"/>在sealdata的hbm文件中: class="com.bj.Seal" cascad原创 2011-11-25 00:19:59 · 708 阅读 · 0 评论 -
对于one-to-one延迟问题 mysql
上篇中我们看到一个矛盾,如果将constraint=true配置到从表上,那么可以保存成功,但是不能懒加载。如果设置到主表中,能懒加载,但是不能保存成功。这个矛盾在oracle中没有问题。解决方案不能从配置上入手,需要改动代码和数据库表机构来解决。 在从表中加入一个唯一约束外键,用来和主表做关联。通过程序逻辑控制保存。 仍然是在一个session中执行保存,首先保存主表,然后f原创 2011-11-27 08:13:36 · 680 阅读 · 0 评论 -
Hibernate三种状态
hibernate的三种状态,瞬时态,持久态,托管态 new或delete出来的为瞬时态,将对象放入到session中管理变为持久态,持久态更新时不用写update语句,托管态, 数据库中有但是session已经关闭可以通过update或saveorupdate变为持久态。主要看session有没有关闭。 get方式获取对象不支持lazy,查找数据库如果没有 返回Null l原创 2011-12-24 13:47:53 · 699 阅读 · 1 评论 -
数据库同步
对于数据库同步,不能采用native的策略,原因是会导致主键不一致,例如两个应用,也就是两个进程同时向不同的数据库中插入数据,那么它们的主键是不一致,这将导致无法同步,如果能做到只有一个数据库实例,也可以。采用increatement的方式可以实现,借助hibernate,它每次都会查询数据库,这样就可以保证主键一致。两个进程之间是不能直接通信的。原创 2011-12-24 10:49:02 · 736 阅读 · 0 评论 -
Hibernate配置---检索策略
Hibernate是一个持久层的框架,不依赖任何容器,支持对象到数据库表的映射,ORM。支持开发中的增删改查操作,将基本的JDBC操作进行封装,可以通过配置hibernate.cfg.xml来方便的切换数据库。做到了系统和数据库的解偶。支持数据库连接池,防止高并发导致系统响应慢和系统崩溃。当多用户同时访问应用时,每次请求都会开辟一个连接对象,当开启和关闭时都会有时间的消耗,如果没有访问数据原创 2011-08-17 01:02:05 · 903 阅读 · 0 评论 -
Hibernate获取JDBC连接
获取JDBC连接项目背景: 数据库中某个表存在大字段,对于oracle来说,像blob,clob和longrow都是大字段类型。当查询该表时,往往存在性能问题,但是现有的系统又不允许重构,因此只能想办法优化。如果采用Hibernate来查询,性能上根本无法保证。因此考虑使用JDBC来直接查询。 获取JDBC的Connection语法如下: Connec原创 2012-02-02 23:56:11 · 1105 阅读 · 3 评论 -
Hibernate动态查找DetachedCriteria
投影1、单个属性,单条记录2、多个属性,单条记录3、单个属性,多条记录4、多个属性,多条记录 投影和分页原创 2012-02-03 00:18:28 · 946 阅读 · 1 评论 -
Hibernate事务异常,查询和更新并存卡死表
最近项目中遇到一个问题:查询和更新事务异步运行,当并发出现在某个表上时,SQLServer数据库会将该表锁死,导致程序无法执行。但是Oracle和MySql不会。项目采用Hibernate作为ORM框架,问题集中在多对多映射上。 项目问题暴露和解决顺序如下:系统中有两个实体类,A类和B类,它们之间为多对多关联。项目目标是根据A的名称,来找到B,然后将B删除。如果在A下面当前原创 2012-02-18 10:05:38 · 3275 阅读 · 2 评论 -
Hibernate--Increment和Hilo主键生成策略原理
最近项目中遇到集群问题,比如我们有两个集群节点,在正常情况下只有一个节点工作(A),当出现异常时切换到另一个集群节点(B)上。项目中使用Hibernate的increment作为数据库主键生成策略。它的原理如下:Hibernate初始化完成后,当获取主键时,会查询一次数据库将最大的Id查询出来,之后的操作就全部是在内存中维护主键的自增,保存时更新到数据库,其源码如下:package org原创 2012-02-21 21:21:37 · 2600 阅读 · 3 评论 -
Hibernate---inverse,cascade(2)
接上: 2、将inverse设置为false;将casecade设置为none,保持测试代码不变。发出如下sql语句:Hibernate: insert into tbranchinfo (address, depname, id) values (?, ?, ?)插入分支机构信息Hibernate: update tseal set branchInfoId=? where原创 2011-09-05 22:35:35 · 617 阅读 · 0 评论 -
Hibernate---inverse,cascade(4)
删除分支机构:测试代码如下: session = HibernateSessionFactory.currentSession(); tx = session.beginTransaction(); BranchInfo branchInfo = (BranchInfo) session.load(BranchInfo.class, Long.valueOf(1));原创 2011-09-05 23:28:23 · 825 阅读 · 0 评论 -
Spring事务传播特性实例解析
背景介绍 目前系统正在进行代码重构前期预研工作,目标采用spring控制事务以减少开发代码量,提高开发效率。同时避免开发人员编码控制事务所带来的链接没有释放,事务没有提交,出现异常事务没有回滚的Bug。为保证系统能正确使用Spring控制事务,必须很好的理解其传播特性。在沟通中发现,好多人知道这个概念但是对于事务的实际传播行为往往模棱两可。基于上述原因,本文采用Demo实原创 2013-11-05 01:08:52 · 32825 阅读 · 46 评论