hibernate教学学习文档(3)

2019-08-03 13:08

name=\>com.mysql.jdbc.Driver jdbc:mysql:///h_day01_db root 1234 org.hibernate.dialect.MySQL5Dialect true true none thread

6 问题

? 如果使用session.openSession() 可以通过执行多次 session.beginTransaction() 进行多次事务操作。

? 但如果使用session.getCurrentSession() 只能使用一次,如果进行提交,默认情况下,将进行session.close(),

解决此问题,spring采用 OpenSessionInViewFilter 过滤器。 @Test public void demo01(){ Configuration config = new Configuration().configure(); SessionFactory factory = config.buildSessionFactory(); Session session = factory.getCurrentSession(); //开启事务 Transaction transaction = session.beginTransaction(); //**** 操作 User user = new User(); user.setUsername(\); user.setPassword(\); session.save(user); //5 提交 transaction.commit(); //再开启 Spring OpenSessionInViewFilter Transaction transaction2 = session.beginTransaction(); //**** 操作 User user2 = new User(); user2.setUsername(\); user2.setPassword(\); session.save(user2); //5 提交 transaction2.commit(); //6 释放 session.close(); //7 关闭工厂 factory.close(); } 7 映射文件详解

? 文件名称: javabean名称.hbm.xml ? 位置:javabean同包 ? 内容:

7.1 约束

7.2 属性基本设置

普通属性 name : 默认用于配置javabean属性名称 length : 配置长度,字符串默认255,mysql类型 varchar(255) column : 当前属性对应表中字段(列)名称,默认name的值 方式1:column属性(attribute) , 7.3 属性和字段选择

其他配置 access ,用于确定当前属性如何进行数据封装 property : 默认值,hibernate采用javabean属性 与 表字段进行对应。在javabean必须提供 getter/setter方法 field : hibernate采用 javabean 字段 与 表字段进行对应。 可以没有getter/setter方法 例如:private String username; noop : 提供给hibernate hql使用,数据库没有对应字段。一般不使用。 precision 和 scale 给 oracle配置,在mysql没有作用。 precision 配置数字位数 scale 配置小数位数 例如:numeric(precision,scale) , 12.34 numeric(4,2)

7.4 优化hibernate生成sql

? 添加insert 和更新update 可以设置,允许当前属性是否在sql语句中 。默认值:true insert=\表示生产insert语句,没有当前字段。 update=\表示生产update语句,没有当前字段。 设置动态 insert和update,默认值:false dynamic-insert=\如果生产insert语句,属性内容为null,生产的sql语句中将没有该字段。 dynamic-update=\只有内容被修改才进行更新。默认更新所有。 注意:如果使用动态更新,数据必须是查询获得的,此时修改的内容将被更新,其他内容不变。 7.5 派生属性

? 派生属性内容,一般情况都是从数据库另一个张表B查询获得。 聚合函数:count()/max()/min()/avg()/sum()等

? sql语句要求,如果使用字段,默认从当前表A(配置文件描述的表)获得字段,如果要从B表中获得字段,

必须使用表的别名。

? hibernate生成sql语句 Hibernate: select book0_.bid as bid1_0_, book0_.title as title1_0_, book0_.price as price1_0_, (select count(*) from t_order o where o.book_id = book0_.bid) as formula0_0_ //需要B表别名 from t_book book0_ where book0_.bid=? 8 OID映射

8.1 什么是OID

? ? ? ?

java区分对象:hashCode相同

数据库记录:主键primary key 相同

hibernate 通过OID确定相同。及OID相同,对象就相同。OID取值为数据库主键的值。 new User().setUid(1) java是一个对象A,hibernate是一个PO对象C new User().setUid(1) java是另一个对象B,hibernate是同一个PO对象C PO持久对象中的数据,对应 表中一条记录。

8.2 配置OID

8.3 基本设置

属性(attribute)配置 name : OID 属性名称 column : 表字段列名 access : 确定访问属性或字段 length :表字段长度 type : 表字段类型


hibernate教学学习文档(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:优选2019年秋沪科版物理九年级同步练习:15.3“伏安法”测电阻

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: