- 浏览: 142628 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
flyingcatjj:
很适合我这种刚接触的
myeclipse xfire 开发webservice实例 -
tangzlboy:
非常好,非常详细,非常中用。
linux入门 -
yzz9i:
楼主说的很是详细。
myeclipse xfire 开发webservice实例 -
zqx888191:
很再理阿!
老程序员的教诲 -
simplecat123:
...
SQLite数据读取
id 主键生成方式 increment Hibernate内部自己做累加,而不是数据库中做累加。 indentity 数据库标示符自增长 squence Oracle常用 hilo 高低位 数据库保存高位字段,Hibernate累加地位字段,新插入数据由这两个字段组成,不会重复。 uuid 生成主键不用访问数据库,Hibernate生成,插入效率很高,主键string类型,查询时候效率不高。 native 根据数据库底层能力选择identity squence hilo assigned 手工分配主键 select 通过底层触发器生成 foreigh 外键引用作为主键 property属性节点 update 是否允许修改列值,比如用户名可以设为不可修改 insert 是否允许插入列值 formula 计算列表达式定义,列在数据库表中是没有的。 lazy 懒加载,列的懒加载。 unique 是否唯一 not-null 是否允许空 index 索引名 unique-key 多列唯一,多列的unique-key值设为一样即可 length 长度 prescision 精度 Session是非线程安全的,生命周期较短,代表一个和数据库的链接,在bs系统内一般不会超过一个请求 内部维护以及缓存和数据库连接,如果session长时间打开会长时间占用内存和数据库的链接。 SessionFactory是线程安全的,一个数据库对应一个SessionFactory,生命周期长一般在整个系统生命周期内有效; SessionFactory保存着和数据库连接的相关信息和映射信息,以及Hibernate云心事要用到的一些信息。 session内部缓存管理与批量更新 session.flush()方法强迫一级缓存和数据库进行同步,如果主键生成方式不是native这类数据库生成的, 那么Hibernate的sql语句在事务提交或者查询操作之前操作,将与数据库的通信延后,不要频繁的进行操作。 如果调用了flush方法,那么就立即进行与数据库的通信。 那么在处理大批量数据插入的时候,会产生内存溢出的情况,因为数据库的通信并不是在一条记录插入后, 而是在事务提交或者事务内部第一次查询的时候,那么一般来说,我们就只能插入20条更新一下数据库的方法。 view plaincopy to clipboardprint? 01.for(int i=0;i<10000;i++){ 02. s.save(user); 03. if(i%20 == 0){ 04. s.flush(); 05. s.clear(); 06. } 07.} for(int i=0;i<10000;i++){ s.save(user); if(i%20 == 0){ s.flush(); s.clear(); } } 需要及时的提交数据库更新操作和清空缓存。 也可以使用StatelessSession 无状态的session,即不使用缓存。使用方式和session一样。 在处理大批量更新的时候,Hibernate3.0以前只能一条一条更新,在3.0以后可以使用批量更新的hql语句 view plaincopy to clipboardprint? 01.Query query = session.createQuery("update u set birthday = :bd from User as u"); 02.query.executeUpdate(); Query query = session.createQuery("update u set birthday = :bd from User as u"); query.executeUpdate(); 但是这种批量更新的方式会清空一级缓存而二级缓存,而且在关联的版本号上可能由些问题。 hql与criteria查询方式补充 查询多个对象select art,user from Article art,User user where art.author.id = user.id and art.id = :id这种方式返回的是Object[],Objectp[0]:article,Object[1]:user。 查询的时候尽量使用get方法,因为get方法会从缓存里找数据,而缺省情况下hql语句是不会将查询结果放入缓存的。 DetachedCriteria离线查询,处理动态查询。 view plaincopy to clipboardprint? 01.static List dc(DetachedCriteria dc){ 02. Session s = HibernateUtil.getSession(); 03. Criteria c = dc.getExecutableCriteria)s_; 04. List rs = c.list(); 05. s.close(); 06. return rs; 07.} static List dc(DetachedCriteria dc){ Session s = HibernateUtil.getSession(); Criteria c = dc.getExecutableCriteria)s_; List rs = c.list(); s.close(); return rs; } 调用语句 view plaincopy to clipboardprint? 01.DetachedCriteria dc = DetachedCriteria.forClass(User.class); 02.String name = request.getParameter("name"); 03.if(name != null){ 04. dc.add(Restrictions.eq("name",name)); 05.} 06.List users = dc(dc); DetachedCriteria dc = DetachedCriteria.forClass(User.class); String name = request.getParameter("name"); if(name != null){ dc.add(Restrictions.eq("name",name)); } List users = dc(dc); 就可以完成一个动态添加查询条件的Criteria。 完毕 end!
发表评论
-
二十六 Hibernate实践
2011-07-04 19:18 677不适合OLAP以查询分析数据为主的系统。适合OLTP联机事务处 ... -
二十五 SQL和命名查询
2011-07-04 19:17 1001SQL和命名查询 SQL查询 //根据sql语句查询 s ... -
二十四 拦截器与监听器
2011-07-04 19:14 909在保存 更新等操作的前 ... -
二十三 iterate查询与N+1次查询的问题
2011-07-04 19:13 728test.java view plaincopy to ... -
二十一 串讲Hibernate配置文件中的配置项
2011-07-04 19:11 835数据源配置 ## JNDI Datasource ... -
二十 悲观锁和乐观锁
2011-07-04 19:10 681为了避免对对象同步操作时候产生的数据不一致问题,我们对对象采用 ... -
十九 hibernate3之缓存
2011-07-04 19:09 866什么是缓存?现在我们来看一个模拟的缓存操作 模拟一个缓存例子 ... -
十八 一对一对象的懒加载
2011-07-04 17:59 699一对一对象的懒加载,对于主的一方,lazy是无效的,它在访问数 ... -
十七 懒加载
2011-07-04 17:58 660十七 懒加载 什么是hibe ... -
十六 继承映射
2011-07-04 17:56 435第一种 一个员工类它有两个子类,利用hibernate我们把 ... -
十五 cascade 级联操作与inverse表是否放弃维护关联关系
2011-07-04 17:54 798cascade 级联操作字段 Casade用来说明当对主对 ... -
十四 在hibernate中使用集合总结
2011-07-04 17:52 842集合映射(set, list, array,bag, map) ... -
十三 array数组形式的映射
2011-07-04 17:51 780数组其实跟List的集合映射没有多大的差别,当然它不可以使用b ... -
十二 集合映射之Map集合
2011-07-04 17:49 735十二 Map集合映射 Map是以键值对的形式存放数据的 ... -
十一 集合映射 List集合
2011-07-04 17:47 990十一 集合映射 set的 ... -
十 组件关联
2011-07-04 17:45 635组件关联 什么是组件关联呢?比如说一个用户,它的名称,有一 ... -
九 多对多关系 学生<--->老师的关系
2011-07-04 17:44 1164九 多对多关系 学生<--->老师的关系 多对多 ... -
八 一对一 用户与身份证的关系
2011-07-04 17:42 808八 一对一 用户与身份证的关系 设计用户实体 主实体 ... -
七 一对多关系 部门与员工的关系
2011-07-04 17:41 1076一对多 部门与员工的关系 相对于部门来说 一对多 根据先前 ... -
六 员工与部门——》多对以关系
2011-07-04 17:37 969关联关系 多对一关系 员工与部门的关系 从员工角度 是 ...
相关推荐
build.xml 手写自动生成Hibernate映射文件和配置文件源代码
hibernate 映射文件 配置分析及要点,你还在为配置hibernate 映射文件而发愁吗?这里总结了它的常用元素及属性。session,SessionFactory的应用
初次对于Hibernate映射文件的配置,包括对Hibernate的简介还有Hibernate的优点的介绍,封装一个实体Bean,并且对它进行文件的配置和测试
此压缩包内有两文件,一个是hibernate的核心配置文件hibernate.cfg.xml,一个是实体映射文件*.hbm.xml,在配置hibernate文件时需要用到头部的约束,还有在配置没提示时需要用到(附带使用方法)。
hibernate实体映射文件字段设置默认值
《Hibernate 各类映射文件与配置文件模板》HibernateMappingConfig.zip
Hibernate_配置映射文件详解
Myeclipse自动生成Hibernate配置文件及实体类映射ORM配置文件--hibernate方式
hibernate配置文件 里面提供了连接数据库 数据库使用的方言 是否打印SQL语句 sql语句的格式 以及对象-关系映射文件的地址等
根据数据库表生成实体、hibernate配置文件和实体映射文件
Hibernate 各种映射的配置文件总结
Hibernate_映射配置文件详解,很好用的学习文件
这个是一个不错的hibernate的映射文件配置的文件
这是最新的hibernate的下载和安装包。hibernate配置文件主要是用于配置数据库连接、事务管理,以及指定hibernate本省的配置信息和hibernate的映射文件信息。
hibernate5.2版本配置和映射dtd文件,hibernate5.2版本配置和映射dtd文件,hibernate5.2版本配置和映射dtd文件,
hibernate映射配置文件不支持union联合查询[参照].pdf
Hibernate的映射配置文件详解,非常实用
在hibernate中,每个数据表对应的其实是一个实体类,每个实体类有一个对应的hbm.xml配置文件匹配,myeclipse中有个MyEclipse ...运用myeclipse的MyEclipse Database Explorer可以在2分钟内生成hibernate的映射文件
此压缩包内存在两个hibernate框架搭建时所用到的约束文件,分别是核心配置文件的约束、映射文件的约束,名称分别为hibernate-configuration-3.0.dtd、hibernate-mapping-3.0.dtd;