- 浏览: 2652197 次
- 来自: 杭州
文章分类
- 全部博客 (1188)
- webwork (4)
- 网摘 (18)
- java (103)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (14)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (7)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介 -
107x:
不错,谢谢!
Python机器学习库
在one-to-many设置中通常都是把many放设置位save-update,但这样会出现问题.
比如班级(Classlist)和班级公告(Notify)是一对多的关系
java 代码
- Session session = factory.openSession();
- Transaction tx= session.beginTransaction();
- Classlist c = (Classlist) session.load(Classlist.class, 25389l);
- Notify nofity = new Notify();
- nofity.setClasslist(c);
- c.getNotify().add(nofity);
- nofity.setClasslist(c);
- session.save(nofity);
- tx.commit();
- session.close();
执行的SQL语句:
sql 代码
- Hibernate: select classlist0_.id as id0_, classlist0_.className as className0_ from classlist classlist0_ where classlist0_.id=?
- Hibernate: select notify0_.classlist_id as classlis7___, notify0_.id as id__, notify0_.id as id3_, notify0_.notify_type as notify_t2_3_, notify0_.title as title3_, notify0_.content as content3_, notify0_.accessory as accessory3_, notify0_.postDate as postDate3_, notify0_.classlist_id as classlis7_3_, notify0_.role_id as role_id3_, role1_.id as id0_, role1_.name as name0_, role1_.uri as uri0_, role1_.classlist_id as classlis4_0_, role1_.user_id as user_id0_, classlist2_.id as id1_, classlist2_.className as className1_, user3_.id as id2_, user3_.USER_TYPE as USER_TYPE2_, user3_.loginID as loginID2_, user3_.password as password2_, user3_.sex as sex2_, user3_.birthday as birthday2_, user3_.realName as realName2_, user3_.nickName as nickName2_, user3_.tel as tel2_, user3_.address as address2_, user3_.describ as describ2_, user3_.studentNumber as student12_2_ from notify notify0_ left outer join role role1_ on notify0_.role_id=role1_.id left outer join classlist classlist2_ on role1_.classlist_id=classlist2_.id left outer join users user3_ on role1_.user_id=user3_.id where notify0_.classlist_id=?
- Hibernate: insert into notify (title, content, accessory, postDate, classlist_id, role_id, notify_type) values (?, ?, ?, ?, ?, ?, 'com.talent.domain.Notify')
但如果是跨Session,情况就大不一样了.
java 代码
- Session session = factory.openSession();
- Transaction tx= session.beginTransaction();
- Classlist c = (Classlist) session.load(Classlist.class, 25389l);
- c.getNotify().iterator();
- tx.commit();
- session.close();
- session = factory.openSession();
- tx= session.beginTransaction();
- Notify nofity = new Notify();
- nofity.setClasslist(c);
- c.getNotify().add(nofity);
- nofity.setClasslist(c);
- session.save(nofity);
- tx.commit();
- session.close();
sql 代码
- Hibernate: select classlist0_.id as id0_, classlist0_.className as className0_ from classlist classlist0_ where classlist0_.id=?
- Hibernate: select notify0_.classlist_id as classlis7___, notify0_.id as id__, notify0_.id as id3_, notify0_.notify_type as notify_t2_3_, notify0_.title as title3_, notify0_.content as content3_, notify0_.accessory as accessory3_, notify0_.postDate as postDate3_, notify0_.classlist_id as classlis7_3_, notify0_.role_id as role_id3_, role1_.id as id0_, role1_.name as name0_, role1_.uri as uri0_, role1_.classlist_id as classlis4_0_, role1_.user_id as user_id0_, classlist2_.id as id1_, classlist2_.className as className1_, user3_.id as id2_, user3_.USER_TYPE as USER_TYPE2_, user3_.loginID as loginID2_, user3_.password as password2_, user3_.sex as sex2_, user3_.birthday as birthday2_, user3_.realName as realName2_, user3_.nickName as nickName2_, user3_.tel as tel2_, user3_.address as address2_, user3_.describ as describ2_, user3_.studentNumber as student12_2_ from notify notify0_ left outer join role role1_ on notify0_.role_id=role1_.id left outer join classlist classlist2_ on role1_.classlist_id=classlist2_.id left outer join users user3_ on role1_.user_id=user3_.id where notify0_.classlist_id=?
- Hibernate: insert into notify (title, content, accessory, postDate, classlist_id, role_id, notify_type) values (?, ?, ?, ?, ?, ?, 'com.talent.domain.Notify')
- Hibernate: update classlist set className=? where id=?
- Hibernate: update notify set title=?, content=?, accessory=?, postDate=?, classlist_id=?, role_id=? where id=?
- Hibernate: update notify set title=?, content=?, accessory=?, postDate=?, classlist_id=?, role_id=? where id=?
- Hibernate: update notify set title=?, content=?, accessory=?, postDate=?, classlist_id=?, role_id=? where id=?
- Hibernate: update notify set title=?, content=?, accessory=?, postDate=?, classlist_id=?, role_id=? where id=?
- Hibernate: update notify set title=?, content=?, accessory=?, postDate=?, classlist_id=?, role_id=? where id=?
为什么第二种情况会多了这么多UPDATE呢?
1.因为在classlist被第一个session关闭,classlist变成了游离对象,没有被session关联。
2.在nofity.setClasslist(c)时候,classlist被关联到Session中成为po.
3.因为配置文件中many方设置的cascade选项是save-update,classlist会被结连更新
4.当classlist被更新的时候,由于one方设置的也是save-update,所以和classlist相互关联的notify也会被更新
如果我们把many方设置为none就可以了。
但这样又会产生问题,如果我们保存notify,Hibernate会报一个异常,提示引用了一个未保存的临时对象。
解决的方法可以是每次都保存one的那边.
java 代码
- Session session = factory.openSession();
- Transaction tx= session.beginTransaction();
- Classlist c = new Classlist();
- Notify notify = new Notify();
- c.getNotify().add(notify);
- notify.setClasslist(c);
- session.save(c);
- tx.commit();
- session.close();
sql 代码
- insert into classlist (className) values (?)
- insert into notify (title, content, accessory, postDate, classlist_id, role_id, notify_type) values (?, ?, ?, ?, ?, ?, 'com.talent.domain.Notify')
相关推荐
### Open_CASCADE学习笔记-曲面建模:深入解析 #### 开源三维建模软件Open_CASCADE中的曲面建模技术 Open_CASCADE是一款强大的开源三维几何建模软件,其核心功能之一便是曲面建模。本文将详细介绍Open_CASCADE在...
第 1 节 句柄类的结构让我们开始讲句柄 (handle) 的第一篇文章,假如你想要在Open CASCADE 上开发软件的话,这篇文章虽然比较简单但是非常重要
大神Roman Lygin写的,介绍Opencascade拓扑结构实现与几何描述的文章,相当经典,论述深入,是难得的好文章。
MATLAB作为一个强大的数学计算和编程环境,提供了丰富的图像处理和计算机视觉工具箱,使得实时人脸检测成为可能。 首先,我们需要理解人脸识别的基本原理。人脸识别通常涉及几个关键步骤:预处理、特征提取和匹配。...
这个笔记是学习oracle数据库过程中整理出来的,比较详细,适合于初学者。 │ oracle与tomcat端口冲突.txt │ Oracle学习笔记.pdf │ Oracle学习笔记.wps │ 安装Oracle后myEclipse不能正常使用.txt │ 手工配置...
* 删除用户:需要具有 dba 权限或 drop user 的系统权限,注意如果要删除的用户已经创建了表,那么就需要在删除的时候带一个参数 cascade。 * 用户管理的综合案例:创建的新用户是没有任何权限的,需要为其指定相应...
总的来说,韩顺平的Oracle视频教程笔记覆盖了Oracle认证、安装、基本使用、用户管理等多个关键领域,旨在提供一个全面的学习路径,帮助初学者逐步掌握Oracle数据库的精髓。通过这些知识,学习者可以有效地管理和维护...
OpenCV,全称Open Source Computer Vision Library,是一个开源的计算机视觉库,它包含了各种图像处理和计算机视觉的算法,广泛应用于图像分析、机器学习等领域。在本教程中,我们将重点探讨如何使用OpenCV进行实时...
- **功能**:创建一个名为`student`的新角色。 - **授权**:`GRANT SELECT ON class TO student;` - **功能**:向`student`角色授予对`class`表的SELECT权限。 **7. 查看用户下数据表:** - **当前用户**:`...
掌握这些基础知识是学习Oracle数据库的第一步,深入学习还包括表、索引、视图、触发器、存储过程、事务处理、备份恢复等多个方面,每个主题都值得细致研究。通过实践和学习,可以不断提升对Oracle数据库的管理和应用...
- `<class>`:用于定义一个实体类到数据库表的映射。 - `name`:实体类的全限定名。 - `table`:对应数据库表的名称。 - `<id>`:表示主键映射。 - `name`:实体类中的主键属性名。 - `column`:数据库表中对应...
其基本模型可概括为一个主键(PO1)对应多个子项(PO2)。在映射文件中,我们使用`onetomany`和`manytoone`关键字来定义这种关系,并通过集合(如`Set`)来存储多个关联实体。 #### 映射示例: ```xml ...
`system`用户则是一个管理操作员,拥有`sysoper`角色,但不具备创建数据库的权限,其默认密码是`manager`。 2. **Oracle的基本使用**:在Oracle中,`sql*plus`是一个强大的命令行工具,用于执行SQL查询和数据库管理...
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它包含了众多图像处理和计算机视觉的算法。 首先,要开始这个项目,你需要安装OpenCV。在Python环境中,你可以通过pip来安装OpenCV。在...
`cascade`策略决定当一个对象被操作时,是否也影响其关联的对象,如`save-update`、`delete`等。 最后,优化Hibernate的性能至关重要。开启`show_sql`可以在控制台打印出执行的SQL语句,方便调试。另外,可以使用二...
- **非特定产品的标准化框架**: JPA 作为一种规范,并不是一个具体的实现产品,而是定义了一套标准,允许开发者在不同的持久化层之间灵活切换而不需修改业务逻辑代码。 - **降低耦合度**: 使用 JPA 开发的应用程序...
5. FetchType和Cascade:可以设置`FetchType`来控制关联对象的加载策略,以及`Cascade`来决定操作的级联方式,如删除一个实体时是否也删除与其关联的实体。 理解并熟练运用这些关联技术,能够帮助开发者更好地设计...
#### 一、Oracle认证及与其他数据库的比较 - **Oracle认证**:Oracle提供了多种级别的认证体系,包括OCA(Oracle Certified Associate)、OCP(Oracle Certified Professional)、OCM(Oracle Certified Master)等...