细谈Hibernate之悲观锁和乐观锁解决hibernate并发

未分类 发表评论
锁( locking),这个概念在我们学习多线程的时候曾经接触过,其实这里的锁和多线程里面处理并发的锁是一个道理,都是暴力的把资源归为自己所有。这里我们用到锁的目的就是通过一些机制来保证一些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓的“锁”,即给我们选定的目标数据上锁,使其无法被其他程序修改。Hibernate支持两种锁机制:即通常所说的“悲观锁(Pessimistic Lockin…

hibernate一级缓存,二级缓存,三级缓存,缓存算法及配置。

未分类 发表评论
什么是缓存(我的理解):在内存中开辟一块空间,把原来在硬盘上的东西,放到内存当中,当需要用到一些数据时,直接在内存中查找,而不是到硬盘上查找。这块内存中的空间就是缓存。缓存能提高程序的运行效率。 一级缓存(session级的缓存):在一个session中load同一个对象2次,load时,hibernate首先在session缓存中查找对象,如果没找到就到数据库中去load。因此,在同一个session中load一个对象2次…

【hibernate】01-mysql存储引擎与配置文件分析

未分类 发表评论
mysql存储引擎与自动提交问题 学习jdbc时jdbc 事物自动提交缺省是true   所以用户的每一条sql语句都会自动提交 不需要用户手工提交    但是hibernate 缺省    把自动提交关闭  所以如果当mysql 用的存储引擎是InoDB时必须开启提交事物  对数据库增删改操作才能有效 如果发现不用transaction.commit() 提交  也可以对数据库增删改操作  那是因为mysql 自动默认存储引擎是 MyISAM  它不支持事物提交与回…

myeclipse自动生成hibernate映射文件的过程

在hibernate中,每个数据表对应的其实是一个实体类,每个实体类有一个对应的hbm.xml配置文件匹配,myeclipse中有个MyEclipse Database Explorer视图,它提供了myeclipse与数据库直接连接的内置窗口,并且通过此窗口可以生成hibernate的mapping文件 前提是:已经新建了一个web工程并且已经通过myeclipse添加了hibernate框架。 一、MyEclipse Database Explorer 建立数据库连接 二,到MyEclipse Datebas…

Hibernate连接SQL Server(非默认实例)URL配置

未分类 发表评论
hibernate.connection.url=jdbc:sqlserver://localhost;instanceName=MSSQLSERVER2;databaseName=WITHDB //localhost为服务器地址; MSSQLSERVER2数据库的实例名; WITHDB为数据库名;不需设置端口地址,用分号隔开。 也有看过 jdbc:sqlserver://localhost//MSSQLSERVER2;databaseName=WITHDB 这样连的,但不知道什么原因,我连不上。

Java学习保存的一些链接

未分类 发表评论
1. Hibernate相关:     a) Hibernate学习参考: Hibernate学习参考      b) Hibernate逻辑删除: Hibernate逻辑删除讨论     c) Hibernate使用@Where实现条件过滤: Hibernate使用@Where 2. Spring相关:     a)  Spring 4.3.6官方文档:Spring FrameWork Reference Documentatio     b)  Spring各个版本下载:Spring下载 Spring下载地址2 3. Swing相关:     a)  Swing是一把刀:  Swing是一把刀     b…

Hibernate快速入门

Hibernate框架介绍 什么是Hibernate 我们可以从度娘上摘抄这样有关Hibernate的介绍: Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户…

手动配置hibernate的全过程

未分类 发表评论
主流的数据库是关系型数据库,而编程的思想是面向对象的,如何将对象存储到关系型的数据库中,消除对象—>关系的阻抗,ORM(Object Relation Model)对象关系模型就出现了,而hibernate就是基于ORM的框架.下面我来聊聊hibernate的手动配置过程. 配置环境:eclipse,mysql数据库,hibernate的jar包和连接mysql数据库用的jar包. 配置前提:在mysql数据库中,名字为sqdb3的数据库,有一个叫employee的表.表的字段创…

Hibernate 的saveOrUpdate方法

未分类 发表评论
hibernate提供了saveOrUpdate的方法来进行数据库的操作。hibernate会根据对象的状态决定是insert还是update,其根本是通过xml文件中unsaved-value来确定的。如果设置null,系统会根据传入的对象的id的值判断,如果是null,则表示对象不存在,那么insert;如果不是Null,则表示已经存在,那么update.如果设置为none,那么表示对象不存在,会始终调用insert;如果设置为any,那么表示对象始终存在,会始终…

Hibernate基于外键的查询方法

未分类 发表评论
/** * 注明:本人所有帖子并非为赚积分,只是供自己作为资料参考,方便以后查询,同是也给需要的人,希望对他们有用*/我在解决这个问题的时候搜到了百度上的同样问题:hibernate中表怎么根据外键查询 ??它的设计为:我有两张表:Teacher id(主键) name Student id(主键) name tid(外键对应Teacher的id) public List findStudentByTeacher(Teacher teacher) { try { session = this.openSession(); S…

Hibernate通过createSQLQuery( )方法实现增删改查

未分类 发表评论
 一、项目结构   二、hibernate核心配置文件:   hibernate.cfg.xm <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <!-- 配置hibernate核心配置文件 --> <hibernate-configuration> <!-- 配置hibernate数据源连…

编程时真的要考虑移植性,Hibernate是一种好选择

未分类 发表评论
编程真的要考虑可移植性,主要对是有感于以前遇到的存储过程。存储过程编程工具多,针对特定数据库,易于调试。如果系统需要运行到不同的数据库,就成了一个问题。大致总结觉得有以下几点:1.不同的数据库采用的数据类型、系统函数、存储过程、sql语法不同2.不同数据库对事务、触发器、游标的支持不一致。3.编程中慎用指定数据库的特性,移植时改动较大.Hibernate是一种不错的选择:1.根据配置文件选择…

Hibernate中的sql语句中使用分组查询

未分类 发表评论
1.我的应用场景:   优化一个分组查询    数据库里面有一张表message(故障表),包括的字段有message_id(故障编码),app_id(项目编码),msg_status(故障状态:0表示未处理,1表示进行中,2表示已完成,3表示未派发, 4表示已派发);还有一张表message_user(人员表),包括的字段有message_id(故障编码),user_name(故障处理人),其中messag_id是来自表message的外键。 现在需要一个方法在…

关于Hibernate底层的查询处理(忽略大小写,模糊匹配,自动加载属性)

未分类 发表评论
问题描述:Hibernate下做模糊匹配不区分大小写的时候,控制打印出来的脚本出现两个coornateName,明明我只传了一个,为什么会有两个? ①模糊匹配 like("属性",条件) ②忽略大小写 like("属性",条件).ignoreCase() 原因:HibrenateUtils.createDetachedCriteria(class,true) 会自动加载属性,也就是说只要action接收了属性对应的值,查询的时候,就会自动给该值做匹配(=) 原始脚本: select this_.id …

hibernate 级联删除报更新失败的问题

未分类 发表评论
使用Hibernate框架,做级联删除时,出现一下报错: org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update 首先查看级联删除对象的映射配置文件, 是否有配置关联关系;因为级联对应关联太多,这里就不贴了。 再打印sql语句,查询具体是在什么地方出现错误: Hibernate: select purchaseor0_.id as id162_0_, purchaseor0_.allGoods_id as allGoods2_162_0_, purchaseor…