HiBernate
只想发财
这个作者很懒,什么都没留下…
展开
-
Hibernate的学习之路四(核心配置文件)
前言核心配置文件的编写,Hibernate的Mapping文件可以随便定义名字,但是默认是—数据名.hbx.xml。而核心配置文件的名字是固定的—hibernate.cfg.xml。而且要放在src目录下核心配置其中数据库的方言,和必须要配置的参数。都在下载的jar包里,有个project项目包中的etc中,有个配置文件hibernate.properties中有说明。原创 2017-11-28 15:27:03 · 255 阅读 · 0 评论 -
Hibernate的学习之路二十五(cascade和inverse的区别)
前言这篇文章主要是讲了,cascade和inverse的区别,以及在正常的开发中,是如何配置的。分析技术分析之cascade和inverse的区别1. cascade用来级联操作(保存、修改和删除)2. inverse用来维护外键的以下是代码 /** * cascade和inverse的区别 */ @Test pub原创 2017-12-03 15:37:35 · 219 阅读 · 0 评论 -
Hibernate的学习之路二十四(放弃外键的维护)
前言 这篇主要是说明了,放弃外键,在数据库多对多的情况下要放弃,其中一方的外键维护。因为会造成语句的多余。 比如A表和B表,A里有B的维护,B里有A的维护,如果互相修改的话,映射一下,A和B都会生成1个sql语句来修改,一共2条来执行相同结果的sql语句,其实只要修改一次就可以。 当然如果在一对多的情况下,就不需要去放弃外键的维护了,还有就是放弃的一方 是一的。需要原创 2017-12-03 15:14:49 · 2337 阅读 · 0 评论 -
Hibernate的学习之路二十三(一对多的cascade取值和孤儿删除)
前言这篇主要说明了cascade有什么取值,一级孤儿删除的定义。分析技术分析之级联的取值(cascade的取值)和孤儿删除1. 需要大家掌握的取值如下 * none -- 不使用级联 * save-update -- 级联保存或更新 * delete原创 2017-12-03 14:47:05 · 494 阅读 · 0 评论 -
Hibernate的学习之路二十二(一对多的级联删除)
前言 这篇主要说明了级联删除,比较繁琐需要举例子说明 代码技术分析之级联删除1. 先来给大家在数据库中演示含有外键的删除客户功能,那么SQL语句是会报出错误的 * 例如:delete from customers where cid = 1;2. 如果使用Hibernate框架直接删除客户的时候,测试发现是可以删除的(这里需要配置级联删除,如果不配置也是报错的...原创 2017-12-03 14:08:51 · 3032 阅读 · 2 评论 -
Hibernate的学习之路二十一(一对多的级联保存)
前言 这篇文章主要是说级联的保存,比较重要的概念是。 保存客户级联联系人,那么配置应该写在客户的配置上。分析技术分析之级联保存1. 测试:如果现在代码只插入其中的一方的数据 * 如果只保存其中的一方的数据,那么程序会抛出异常。 * 如果想完成只保存一方的数据,并且把相关联的数据都保存到数据库中,那么需要配置级联!!原创 2017-12-03 13:22:31 · 298 阅读 · 0 评论 -
Hibernate的学习之路二十(一对多的双向关联保存数据)
前言这个文章主要说明了,双向关联,代码 /** * 最麻烦的双向关联的方式,保存数据 */ @Test public void run1(){ Session session = HibernateUtils.getCurrentSession(); Transaction tr = session.beginTransaction(); //原创 2017-12-03 12:56:26 · 635 阅读 · 0 评论 -
Hibernate的学习之路十九(一对多的JavaBean编写和映射的配置文件的编写)
前言 Hibernate属于ORM框架,它基本不适用sql语句,但是设计到多表查询的时候,就有些麻烦了。 当一对多的时候,一是集合,多是对象。 一里是多的对象集合,多里是一的对象。分析以下是一的JavaBean代码,记住千万不要new。Hibernate会通过映射自动实例化,如果new了,那么一直都是一个对象,会出问题。原创 2017-12-03 12:36:51 · 777 阅读 · 0 评论 -
Hibernate的学习之路十八(Criteria的查询简单)
前言今天继续学习Hibernate的Criteria接口,这个接口更适用于条件的查询。只不过比HQL麻烦。是一个完全面向对象的编程。分析Criteria查询接口(做条件查询非常合适)1. 具体的查询代码如下 // 1.查询所有记录 /*Criteria criteria = session.createCriteria(Custome原创 2017-12-01 22:10:43 · 266 阅读 · 0 评论 -
Hibernate的学习之路二十六(多对多)
前言 这篇文章主要是说明一下概念,在数据库表设计中,如果是多对多的关系,那么两张多的表,中间会有一张关系表,这张关系表和两张多关系表,是多对一对多的关系。 而在Hibernate框架中,只要配置好两张多的表的JavaBean以及映射文件,就会自动创建关系表。原创 2017-12-03 16:39:25 · 180 阅读 · 0 评论 -
Hibernate的学习之路二十八(唯一OID和对象导航的查询的方式)
前言这篇文章主要讲了,一些查询的方法。以及开发中比较常见的分析技术分析之Hibernate框架的查询方式1. 唯一标识OID的检索方式 * session.get(对象.class,OID)2. 对象的导航的方式主要讲了原创 2017-12-04 12:08:36 · 972 阅读 · 0 评论 -
Hibernate的学习之路二(入门)
前言这篇主要说明一些jar在哪里。分析第一步:下载Hibernate5的运行环境1. 下载相应的jar包等 * http://sourceforge.net/projects/hibernate/files/hibernate-orm/5.0.7.Final/hibernate-release-5.0.7.Final.zip/download 2. 解压后对目原创 2017-11-28 10:50:07 · 292 阅读 · 0 评论 -
Hibernate的学习之路一(概念)
前言 这篇主要是对Hibernate有个概念,Hibernate是一个开源的映射框架,被成为ORM主要解释是: 什么是ORM(对象关系映射)1. ORM映射:Object Relational Mapping * O:面向对象领域的Object(JavaBean对象) * R:关系数据库领域的Relational(表的结构) *原创 2017-11-27 20:21:47 · 214 阅读 · 0 评论 -
Hibernate的学习之路三十四(QBC的聚合函数的查询)
前言继续来学习QBC的聚合函数的查法。分析5. 聚合函数查询(Projection的聚合函数的接口,而Projections是Hibernate提供的工具类,使用该工具类设置聚合函数查询) * 使用QBC的聚合函数查询,需要使用criteria.setProjection()方法 * 具体的代码如下 Session session =原创 2017-12-04 15:13:31 · 1035 阅读 · 0 评论 -
Hibernate的学习之路三十一(HQL的投影查询)
前言 这篇文章主要说明了HQL的投影查询,什么意思?在什么地方用呢? 之前我们的查询都是查询整张表的,但是有可能只需要其中的几个字段,不需要全部都查询出来,就用到了投影查询。分析这里就不做演示了,贴出例子demo就好。这里默认返回的不是对象了,而是数组。主要步骤是:1.JavaBean的构造要想对应,切记不要忘记加一个空的构造。2原创 2017-12-04 13:22:25 · 678 阅读 · 0 评论 -
Hibernate的学习之路三十三(QBC的基本查询方式)
前言 今天继续学习,之前贴出的大致图,再来一次。 技术分析之Hibernate框架的查询方式1. 唯一标识OID的检索方式 * session.get(对象.class,OID)2. 对象的导航的方式3. HQL的检索方式 * Hibernate Query Language -- Hibernate的查询语言4. QBC的检索方式原创 2017-12-04 14:33:45 · 260 阅读 · 0 评论 -
Hibernate的学习之路三十二(HQL的聚合函数查询)
前言今天继续学习了HQL的聚合函数,特别需要注意的是,之前在HQL写查询的时候不允许有 * ,现在聚合函数里可以有 * 。还有一个number的对象,好像数字都可以接收,小数和整数都可以,是父类,有空可以研究分析现在贴出聚合函数的适用代码 /** * 聚合函数:求数量 */ @Test public void run11(){ Sessi原创 2017-12-04 13:33:57 · 546 阅读 · 0 评论 -
Hibernate的学习之路二十七(多对多操作级联)
前言前面有说了一对多的情况下,通过级联来操作数据库。现在是多对多的情况下,操作级联。分析首先是需要说明的是多对多的情况下,需要有一方去放弃维护外键,不然会报错。因为一方去保存了数据,另一方也去保存数据,两边都是对这个关系表进行操作,而且操作最后的结果也是一样的,就会造成冲突。技术分析之多对多的级联保存1. 级联保存 *原创 2017-12-03 18:46:31 · 281 阅读 · 0 评论 -
Hibernate的学习之路三十(HQL的基本查询)、
前言 这篇主要是接着上篇来说的。先贴出大致图。原创 2017-12-04 12:13:50 · 230 阅读 · 0 评论 -
Hibernate的学习之路十七(HQL条件查询)
前言 今天继续学习了Hibernate的HQL条件查询。分析以下是例子,可以用?的形式,也可以用 :名字的形式。 @Test public void run4(){ Session session = HibernateUtils.getSession(); Transaction tr = session.be原创 2017-12-01 21:45:31 · 789 阅读 · 0 评论 -
Hibernate的学习之路十六(绑定本地session)
前言 今天继续学习了绑定sesssion,还是一些hibernate会出现的一些常见问题,但是已经有比较好的解决方法了。 先来说说在学习JavaWeb的时候有一个工具类,叫做ThreadLocal。它主要是一个MAP集合,在JavaAPI中可以查到 它的K值是线程,V值是存放的值。 它的set方法,只要存放的V值,K值会自原创 2017-12-01 21:13:05 · 231 阅读 · 0 评论 -
在使用Hibernate save()方法的时候 报错: org.hibernate.exception.ConstraintViolationException:could not perform
org.hibernate.exception.ConstraintViolationException:could not perform addBath 错误可能原因:实体属性的值与数据库字段类型相悖(如:数据库中不允许为null,单数传值为null)原创 2017-11-30 15:05:44 · 1015 阅读 · 0 评论 -
Hibernate的学习之路七(Transaction)
前言本篇文章主要是写了Hibernate里的Transaction方法,这个方法用来控制事务。编码 /** * 测试保存 */ @Test public void testSave3(){ Session session = null; Transaction tr = null; try { // 获取session session = H原创 2017-11-29 21:19:01 · 241 阅读 · 0 评论 -
Hibernate的学习之路七(SessionFactory)
前言这篇文章主要是说明了SessionFactory这个对象的特点,以及创建它的工具类。分析SessionFactory是一个Hibernate的初始化对象,用来创建session对象。session是操作数据库的。它是工厂模式的,一个数据库对应一个SessionFactory,所以不要轻易的去创建和销毁它,会消耗大量的资源。代码工具类package原创 2017-11-29 12:34:37 · 355 阅读 · 0 评论 -
Hibernate的学习之路六(加载配置)
前言这篇文章,主要说明了利用configuration,来加载配置文件讲解Hibernate在使用配置的时候,用的是配置文件xml。那么为什么不使用,参数配置文件,也就是K-V的形式,说明参数呢?因为利用Hibernate写的配置文件有约束,不怎么错。而且框架里有映射Mapping不用去做过多的东西。更去的是这么写configuration cg = new confi原创 2017-11-28 19:29:49 · 182 阅读 · 0 评论 -
Hibernate的学习之路五(核心可选配置)
前言这篇文章主要是学习,Hibernate的核心配置文件,其中有一个自定义的可选配置编码显示SQL语句trueSQL语句格式化true创建完删除hibernate.hbm2ddl.auto create-drop每次都创新创建。hibernate.hbm2ddl.auto create如果没有表结构,创建表结构。如果存在,不会创建,添加数据。原创 2017-11-28 18:41:55 · 247 阅读 · 0 评论 -
Hibernate的学习之路四(核心配置扩展)
前言这篇主要是说明,核心配置文件还有什么其他的属性,有个印象。另外听到一个很神奇的东西,就是Hibernate可以为你创建表结果?这么神奇的!不知道是否有理解错,后面也会学到。字段1. 映射文件,即Stu.hbm.xml的配置文件 * 标签 -- 用来将类与数据库表建立映射关系 * name -- 类的全路径原创 2017-11-28 17:03:35 · 200 阅读 · 0 评论 -
Hibernate的学习之路四(入门代码)
前言这篇主要说明了hibernate的代码快速入门,还没有一些封装。入门以下就是快速入门的代码,为了保存客户资料,相当于insert的操作了,利用对象来操作数据库,面向对象编程,不用编程sql。其中开启事务,和提交事务。也能回滚事务(rollback);@Test public void testSave(){ /** * 1. 先加载配置文件 * 2原创 2017-11-28 15:55:14 · 174 阅读 · 0 评论 -
框架配置文本约束
前言在公司中,某些项目是保密的,电脑也是没有网络的,但是在配置文件中,约束是需要网络才可以使用的。所以就需要配置本地的约束操作这里是以为hibernate的约束为例子:* 先复制http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd --> window --> preferences --> 搜索xml --> 选择x原创 2017-11-28 15:59:39 · 245 阅读 · 0 评论 -
Hibernate的学习之路七(Session)
前言这篇主要是写了session操作数据库的方法,通过不同的方法,操作数据库编写添加的方法 /** * 测试工具类 */ @Test public void testSave2(){ // 原来:加载配置文件,获取Factory对象,获取session Session session = HibernateUtils.getSession(); Tr原创 2017-11-29 21:08:34 · 240 阅读 · 2 评论 -
BeanUtils工具的使用
前言这里主要是说明,BeanUtils这个jar包的使用,一般是在前端框架里才会使用,获取request发的数据MAP,映射的Bean里。编码需要导入工具包。包的名字是commons-beanutils-1.8.3.jar;protected void doGet(HttpServletRequest request, HttpServletResponse res原创 2017-11-30 15:43:37 · 267 阅读 · 0 评论 -
Hibernate的学习之路十五(丢失更新问题)
前言在Hibernate中有一个丢失更新的问题,在并发中会遇到。当两个请求同时操作一个数据,会导致获取的数据库不同,后一个会复制前一个修改的内容。分析为了解决这个问题,有2中解决办法。悲观锁:主利用数据库锁的机制。乐观锁:主要利用javabean添加版本字段。丢失更新的问题1. 如果不考虑隔离性,也会产生写入数据的问题,这一类的问原创 2017-12-01 20:10:19 · 295 阅读 · 0 评论 -
Hibernate的学习之路十四(事务)
前言主要说明事务分析事务相关的概念1. 什么是事务 * 事务就是逻辑上的一组操作,组成事务的各个执行单元,操作要么全都成功,要么全都失败. * 转账的例子:冠希给美美转钱,扣钱,加钱。两个操作组成了一个事情!2. 事务的特性 * 原子性 -- 事务不可分割. * 一致性 -- 事务执行的前后数据的完整性保持一致.原创 2017-12-01 19:48:46 · 181 阅读 · 0 评论 -
Hibernate的学习之路十(持久化对象的三个状态)
前言我们在对数据库进行操作的时候,都会创建JavaBean的对象,这篇主要说明了这个对象的三种状态。分析持久化对象的状态1. Hibernate的持久化类 * 持久化类:Java类与数据库的某个表建立了映射关系.这个类就称为是持久化类. * 持久化类 = Java类 + hbm的配置文件2. Hibernate的持久化类的状态原创 2017-12-01 14:32:01 · 232 阅读 · 0 评论 -
Hibernate的学习之路九(主键的生成策略)
前言这篇文章主要是说明了,Mapping映射文件里,主键的生成策略分析1.increment策略:不适用于并发,它是先查询出数据库的最大ID,之后+1.但是在并发之中是不安全的。2.identity策略:主要是用于mysql的自动增长策略,不适用于其他数据库。3.sequence策略:主要用于oracle的自动增长策略,不适用于其他数据库。4.uuid策略:原创 2017-12-01 13:54:45 · 187 阅读 · 0 评论 -
Hibernate的学习之路十三(操作一级缓存)
前言这里主要是说明了一级缓存session的一些操作方法。分析1. 学习Session接口中与一级缓存相关的方法 * Session.clear() -- 清空缓存。 * Session.evict(Object entity) -- 从一级缓存中清除指定的实体对象。 * Session.flus原创 2017-12-01 18:34:55 · 192 阅读 · 0 评论 -
Hibernate的学习之路十二(session的快照机制)
前言本片文章主要是说明了,hibernate的快照机制,能够自动更新,不用update。分析在创建session这个一级缓存对象的时候,session分为2块区域,一个是缓存区域。一个是快照区域当到了查询语句, 所获得的数据,缓存区域保存一份,快照区域也保存一份。到后面的set的时候,会修改缓存区域的参数。当提交事务的时候,会对比2块原创 2017-12-01 16:33:29 · 727 阅读 · 0 评论 -
Hibernate的学习之路十一(Session的一级缓存和证明存在)
前言这篇文章主要是说明了,session这个一级缓存,给了个概念,以及通过代码证明一级缓存的存在。session是一级缓存生命周期短暂,通过sessionFactory来强化一级缓存。分析Session对象的一级缓存(重点)1. 什么是缓存? * 其实就是一块内存空间,将数据源(数据库或者文件)中的数据存放到缓存中.再次获取的时候 ,直接从缓存中获取.可以提原创 2017-12-01 16:12:14 · 279 阅读 · 0 评论 -
Hibernate的学习之路八(持久化类)
前言今天主要学习了JavaBean的概念什么是持久化类1. 持久化类:就是一个Java类(咱们编写的JavaBean),这个Java类与表建立了映射关系就可以成为是持久化类。 * 持久化类 = JavaBean + xxx.hbm.xml持久化类的编写规则1. 提供一个无参数 public访问控制符的构造器 -- 底层需要进行反射.原创 2017-11-30 17:30:02 · 203 阅读 · 0 评论 -
Hibernate的学习之路三(映射文件编写)
前言这篇主要是学习了Hibernate的映射文件如何编写,数据库的一张表对应一个xml文件。它的命名主要是— 库名.hbx.xml。其中hbx说的是hibernate的xml文件。映射以下是映射文件xml,主要是对xml文件起到约束条件,不会让xml出现约束以外的关键字。但是这个约束需求联网才可以使用,但是有些公司没有网络,所以另外一篇文章,会写如何导入本地的约束条件。原创 2017-11-28 11:55:08 · 438 阅读 · 0 评论