ImageVerifierCode 换一换
格式:DOC , 页数:69 ,大小:1.28MB ,
资源ID:4751703      下载积分:5 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4751703.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(2023年hibernate知识点详解王成敏.doc)为本站上传会员【二***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

2023年hibernate知识点详解王成敏.doc

1、1 框架介绍 2 回顾 2.1 JDBC 2.2 DBUtils 3 ORM框架 l hibernate 就是一个ORM框架 4 hibernate介绍 l 版本:hibernate-distribution-3.6.10.Final-dist 4.1 分析 4.2 什么是hibernate l Hibernate是轻量级JavaEE应用的持久层解决方案,是一个关系数据库ORM框架 轻量级:使用hibernate较少的依赖hibernate框架,只使用少量的api进行操作。 l Hibernate提供了对关系

2、型数据库增删改查操作 l 流行数据库框架 1 JPA Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系(只有接口规范) sun 对ORM框架推出一个规范(接口,没有实现),hibernate支持jpa 2 Hibernate 最流行ORM框架,通过对象-关系映射配置,可以完全脱离底层SQL 3 MyBatis 本是apache的一个开源项目 iBatis,支持普通 SQL查询,存储过程和高级映射的优秀持久层框架 4 Apache DBUtils 、Spring JDBCTemplate 4.3 优点 5

3、hello world(重要) 5.1 编写流程 l 导入jar包 l 核心配置文献:hibernate.cfg.xml l java对象:javabean l 映射文献:*.hbm.xml 需要将hbm.xml映射文献 添加到核心配置hibernate.cfg.xml中 l 操作api,进行添加操作:save 5.2 导入jar包 5.3 核心配置文献 l 位置:src l 名称:hibernate.cfg.xml l 约束:

4、Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> l 正文内容

5、ion-3.0.dtd"> com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/h_day01

6、operty> root 1234 org.hibernate.dialect.MySQL5Dialect update 5.4 java对象:JavaBean

8、 package cn.itcast.a_hello; public class Book { private Integer bid; //注意:类型必须是整形 private String title; private String author; 5.5 映射文献 l 位置:和javabean同包 l 名称:Book.hbm.xml l 约束:

9、www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> l 正文内容: l 注意: 将映射文献 添加到 核心配置文献(h

11、ibernate.cfg.xml)中 5.6 操作api @Test public void demo01(){ Book book = new Book(); //注意:必须要手动bid的值 book.setTitle("宝典"); book.setAuthor("关系"); //1 加载核心配置文献 Configuration config = new Configuration().co

12、nfigure(); //2 获得sessionFactory,相称于连接池 SessionFactory factory = config.buildSessionFactory(); //3 获得session,相称于jdbc连接 Session session = factory.openSession(); //4启动事务 Transaction transaction = session.beginTransaction(); // 操作:添加 session.save(book); //5 提交或回滚 commi

13、t() | rollback() mit(); //6 释放资源 session.close(); factory.close(); } 6 整合日记log4j 6.1 java项目提醒 l 日记没有生效 6.2 日记框架介绍 6.3 整合log4j l log4j 核心jar l 过滤jar l log4j 核心配置文献 注意:只需要添加文献,不需要读懂内容,之后讲解。 7 CURD操作 7.1 添加 @Test public void demo01(){ //添加

14、 Book book = new Book(); //注意:必须要手动bid的值 book.setTitle("宝典"); book.setAuthor("关系"); //1 加载核心配置文献 Configuration config = new Configuration().configure(); //2 获得sessionFactory,相称于连接池 SessionFactory factory = config.buildSessionFactory(); //3 获得session,相称于jdbc连接 Session

15、session = factory.openSession(); //4启动事务 Transaction transaction = session.beginTransaction(); // 操作:添加 session.save(book); //5 提交或回滚 commit() | rollback() mit(); //6 释放资源 session.close(); factory.close(); } 7.2 更新 @Test public void demo02(){ //更新 bi

16、d=3 title=葵花 Book book = new Book(); book.setBid(3); book.setTitle("葵花"); Configuration config = new Configuration().configure(); SessionFactory factory = config.buildSessionFactory(); Session session = factory.openSession(); Transaction transaction = session.beginTransactio

17、n(); //操作 session.update(book); //通过id更新所有的数据,假如没有设立值,将更新默认值 mit(); session.close(); factory.close(); } 7.3 删除 @Test public void demo03(){ // 删除 bid=2 Book book = new Book(); book.setBid(2); Configuration config = new Configuration().configure();

18、 SessionFactory factory = config.buildSessionFactory(); Session session = factory.openSession(); Transaction transaction = session.beginTransaction(); //删除 ,通过id删除 session.delete(book); mit(); session.close(); factory.close(); } 7.4 通过id查询 @Test publ

19、ic void demo04(){ // 通过 bid=4 Integer bid = 4; Configuration config = new Configuration().configure(); SessionFactory factory = config.buildSessionFactory(); Session session = factory.openSession(); Transaction transaction = session.beginTransaction(); //通过id查询 Book b

20、ook = (Book)session.get(Book.class, bid); System.out.println(book); mit(); session.close(); factory.close(); } 7.5 查询所有 @Test public void demo05(){ // 查询所有 Configuration config = new Configuration().configure(); SessionFactory factory = config.buildSessionFact

21、ory(); Session session = factory.openSession(); Transaction transaction = session.beginTransaction(); //需要hibernate提供hql语句进行查询 // * hql : hibernate query language 查询语言,面向对象的查询语言,类似与sql语句。 // * sql语句查询所有:select * from t_book --sql语句使用的表 // * hql语句查询所有:from Book --hql语句使用的对象

22、 Query query = session.createQuery("from Book"); List allBook = query.list(); for (Book book : allBook) { System.out.println(book); } mit(); session.close(); factory.close(); } 7.6 分页查询 @Test public void demo06(){ //分页查询 // * sql语句分页:select *

23、 from t_book limit ?,? // * 开始索引:startIndex,从0开始 。算法:startIndex = (pageNum - 1) * pageSize // * 每页显示个数:pageSize Configuration config = new Configuration().configure(); SessionFactory factory = config.buildSessionFactory(); Session session = factory.openSession(); Transaction tr

24、ansaction = session.beginTransaction(); //分页,在查询所有基础上 Query query = session.createQuery("from Book"); // ### 第一页 // * 设立开始索引 //query.setFirstResult(0); // * 设立每页显示个数 //query.setMaxResults(2); // ### 第二页 // * 设立开始索引 query.setFirstResult(2); // (2 - 1) * 2 //

25、 设立每页显示个数 query.setMaxResults(2); List allBook = query.list(); for (Book book : allBook) { System.out.println(book); } mit(); session.close(); factory.close(); } 8 api详解 8.1 体系结构 vo:value object ,值对象,使用在web层,用于显示数据。 bo:business object,业务对象,使用在s

26、ervice层,根据不同页面封装对象,也许包含多个PO。 po:persistent object,持久对象,与数据库进行数据交互的。 一般情况使用javabean将三个对象统一。 8.2 Configuration对象 8.2.1 构造 l 用于加载src下的hibernate.properties文献,此文献为hibernate老版本中的核心配置文献,但现在已经不使用。 内容:properties中 key =value方式 例如:hibernate.connection.driver_class = com.mysql.jdbc.Driver l hibern

27、ate提供参考文献 %hiberante%/project/etc/hibernate.properties 8.2.2 方法 l 核心配置文献 ,加载的src下,hibernate.cfg.xml configure("/资源文献途径") , 加载指定目录下的资源文献 l 映射文献 hbm.xml 后缀固定的,必须与javabean同包。 addResource("xml文献") 加载指定位置的映射文献 核心配置加载时,hibernate将执行addResource加载配置的映射文献 8.2.3 总结 开发中,必须将

28、hbm.xml 配置到 hibernate.cfg.xml文献中 学习中,使用addClass 加载执行类的hbm.xml 文献,简化配置操作。 8.3 SessionFactory对象 l SessionFactory相称于连接池,可以提供操作数据的Session对象。 l SessionFactory 是线程安全,及不同的线程都可以使用。且可以保存,不同的线程获得session必须不同。 8.3.1 获得方式 SessionFactory factory = config.buildSessionFactory(); 8.3.2 方法 //3.1 获得一个新的ses

29、sion , 每执行一次openSession() 将获得一个新的session Session session = factory.openSession(); //3.2 获得当前线程中绑定的session,同一个线程共享一个session // * 注意:默认情况下不能使用,必须进行配置(暂时不用) Session session2 = factory.getCurrentSession(); 8.3.3 工具类 public class H3Utils { // 获得SessionFactory。相称于连接池,只有一个 private static Sessi

30、onFactory factory; static{ factory = new Configuration().configure().buildSessionFactory(); } /** * 获得一个新的session * @return */ public static Session openSession(){ return factory.openSession(); } /** * 获得线程中绑定的session * @return */ public static Session get

31、CurrentSession(){ return factory.getCurrentSession(); } } 8.4 Session对象 l 相称于JDBC的连接Connection ,用于操作PO(持久)对象 l session线程不安全的,及不同的线程必须使用不同的session。 l 常用方法: save:将指定PO保存数据库,底层将触发一条insert语句。 persist 是jpa提供的保存对象的方法,与save等效的。 update:通过id更新所有的数据,底层将触发一条update语句。 saveOrUpdate:假如没有id

32、值,将执行save 及 insert语句。 假如有id值,将执行update 及 update语句。 delete : 通过id删除 get : 通过id查询对象,立即查询,当执行get方法之后,立即触发select语句。假如没有查询到,返回null load : 通过id查询对象,延迟查询,当执行load方法之后,不触发select语句,直到使用了查询对象的具体的数据时,才触发select语句。假如没有查询到,将抛异常。 createQuery: 执行HQL语句 createSQLQuery:执行sql语句 createCriteria : hibernat

33、e提供 QBC语句。(不研究) merge : 与saveOrUpdate非常相似,假如没有id值将执行insert语句 假如有id值,将执行select语句,假如数据没有变化,将不触发任何语句。 假如数据变化了,将触发update语句。 8.5 事务transaction对象 l 启动事务:session.beginTransaction(); l 提交事务:mit(); l 回滚事务:transaction.rollback(); l 获得当前事务:session.getTransaction(); //启动 session.beginTrans

34、action(); //获得当前事务并提交 session.getTransaction().commit(); 9 核心配置文献详解 l 位置:src l 名称:hibernate.cfg.xml 9.1 创建数据基本配置 ## MySQL #hibernate.dialect org.hibernate.dialect.MySQL5Dialect #hibernate.connection.driver_class com.mysql.jdbc.Driver #hibernate.connection.url jdbc:mysql:/

35、/localhost:3306/test #hibernate.connection.username gavin #hibernate.connection.password ## Oracle #hibernate.dialect org.hibernate.dialect.Oracle8iDialect #hibernate.dialect org.hibernate.dialect.Oracle9iDialect #hibernate.dialect org.hibernate.dialect.Oracle10gDialect #hibernate.conne

36、ction.driver_class oracle.jdbc.driver.OracleDriver #hibernate.connection.username ora #hibernate.connection.password ora #hibernate.connection.url jdbc:oracle:thin:@localhost:1521:orcl 9.2 内容

37、ate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> com.mysql.jdbc.Driver

38、 jdbc:mysql://localhost:3306/h_day01 root 1234 org.hibernate.dialect

39、MySQL5Dialect update

41、 true true 10 映射文献详解 10.1 基本配置内容 10.2 主键生

46、成策略 主键生成策略,hibernate根据不同策略用于生成数据库的主键值的。 #1 increment , hibernate 自己维护主键的增强。通过执行select max(id) from ...查询最大值,加1. 建议:一般不使用,存在线程并发访问问题 #2 identity ,hibernate 将采用数据库底层的自动增强。例如:mysql auto_increment #3 sequence ,hibernate 将采用数据库底层的序列。例如:oracle 不支持自动增强,但支持序列 #4 hilo,高低位算法,假如数据库不支持序列,也不支持自动增强,h

47、ibernate将采用算法机制。 #5 native ,根据底层数据库的能力选择 identity、sequence 或者 hilo 中的一个。【】 *** 以上5个策略 主键字段类型,必须是整形(long, short 或者 int ) #6 uuid 使用随机字符串【】 *** 以上6个策略 代理主键(hibernate维护的) #7 assigned 自然主键(程序自己维护)【】 11 持久对象唯一标记符:OID l 数据库中的数据,根据主键的值不同进行区分。 l java对象,根据内存中地址不同进行分区。 l PO对象,根据对象的用于存放主键的字段的值进行区分。

48、用于存放表中主键的javabean的字段称为:OID 例如: user1 = new User(); user1.setUid(1); user2 = new User(); user2.setUid(1); user1 和 user2 两个java对象,但是一个PO对象(oid相同) 12 持久对象状态 12.1 分类 l hibernate规定三种状态 瞬时态:transient,session没有缓存,数据库没有数据。例如:new对象 OID没有值 持久态:persistent,session缓存,数据库中最终会有数据。例如:save(obj)

49、OID有值 脱管态:detached,session没有缓存,但数据库中有数据。例如:new User() , user.setUid(1) OID有值 12.2 状态的转换 l 瞬时 --> 持久:当执行save() 或 saveOrUpdate() 将瞬时转换持久 --> 脱管:手动设立OID l 持久 --> 瞬时:执行delete() --> 脱管:session.close() 关闭 session.clear() 清空缓存 session.evict(obj) 将执行的PO对象从session移除 l 脱管 --> 持久:执行update() 或 saveOrUpdate() --> 瞬时:手动删除OID 13 一级缓存 13.1 介绍 l Session接口对象实现类,提供很多集合用于存放一个连接中的数据,此类集合将其称为:一级缓存。 l 一级缓存:session级别的缓存,假如session销毁,一级缓存不存在了。 l 缓存:介于应用程序和数据库之间

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服