尚学堂hibernate学习笔记(原版整理).doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学堂 hibernate 学习 笔记 原版 整理
- 资源描述:
-
这个文件是我自己照着网上找到的马士兵老师的hibernate笔记截图版 手打出来的 有颜色部分的文字是我学习的时候自己添加的笔记说明(红色的除外) 刨除去颜色部分 就是和马士兵老师的原版文档一模一样了 希望能给好学的朋友一点帮助 目录 课程内容 5 1 HelloWorld 5 2 Hibernate原理模拟 - 什么是O/R Mapping以及为什么要有O/R Mapping 5 3 常见的0/R框架(了解) 5 4 hibernate基础配置(重点) 5 5 ID生成策略(重点 AUTO) 5 6 Hibernate核心开发接口介绍(重点) 5 7 对象的三种状态(了解) 5 8 关系映射(重点) 5 9 Hibernate査询(HQL) 5 10 在Struts基础上继续完善BBS200 5 11 性能优化(重点) 5 12 补充话题 5 风格 5 1 先脉络,后细节 5 2 先操作,后原理 5 3 重Annotation,轻xml配置文件 5 资源 5 1 http://www. hibernate.org 5 2 hibernate zh_CN文档 5 3 hibernate annotation references 5 环境准备 5 1 下载hibernate-distribution-3.3.2.GA-dist 5 2 下载hibernate-annotations-3[1].4.0.GA 5 3 注意阅读hibernate compatibility matrix(hibernate 网站download) 5 4 下载slf4jl.5.8 6 Hibernate HelloWorld 6 1 建立新java 项目,名为hibernate_0100_HelloWorld 6 2 学习建User-library-hibernate,并加入相应的jar包 6 3 引入mysql的JDBC驱动包 6 4 在mysql中建立对应的数据库以及表 6 5 建立hibernate 配置文件hibernate.cfg.xml 6 6 建立Student 类 6 7 建立Student 映射文件 Student.hbm.xml 6 8 将映射文件加入到hibernate.cfg.xml中 6 9 写测试类Main,在Main中对Student对象进行直接的存储测试 6 10 FAQ: 6 11 Note: 6 12 建立能力 7 建立 Annotation 版本的 HelloWorld 7 1 创建teacher 表,create table teacher (id int primary key, name varhcar(20), title varchar(lO)); 7 2 创建Teacher 类 7 3 在hibernate lib 中加入annotation的jar包 7 4 参考Annotaion文档建立对应的注解 7 5 在hibernate.cfg.xml中建立映射<mapping class:.../〉 7 6 参考文裆进行测试(注意文裆中缺少configure()的小bug) 7 7 FAQ: @不给提示 7 What is and Why 0/R Mapping 7 1 JDBC操作数据库很繁琐 7 2 Sql语句编写并不是面向对象的 7 3 可以在对象和关系表之间建立关联来简化编程 7 4 0/R Mapping 简化编程 7 5 0/R Mapping跨越数据库平台 7 6 Hibernate_0200_OR_Mapping_Simulation 7 0/R Mapping Frameworks 7 1 hibernate 7 2 toplink 8 3 jdo 8 4 JPA 8 Hibernate基础配置 8 1 对应项目:Hibernate_0300_BasicConfiguration 8 2 介绍MSQL的图形化客户端 8 3 hibernate.cfg.xml: hbni2ddl.auto 8 4 搭建日志环境并配置显示DDL语句 8 5 搭建jUnit环境 8 6 hibernate.cfg.xml:show_sql 8 7 hibernate.cfg.xml:format_sql 8 8 表名和类名不同,对表名进行配置 8 9 字段名和属性相同 8 10 字段名和属性名不同 8 11 不需要psersistence的字段(不用列) 8 12 映射日期与时间类型,指定时间精度 8 13 映射枚举类型( 比较少用) 9 14 字段映射的位置(field或者get方法) 9 15 @Lob 9 16 课外:CLOBBLOB类型的数据存取 9 17 课外:Hibernate自定义数据类型 9 18 hibernate 类型 9 ID生成策略 9 1 对应项目:hibernate_0400_ID 9 2 注意: 9 3 xml生成id 9 4 注解方式:@GeneratedValue 9 5 FAQ; 10 6 联合主键 10 核心幵发接口介绍 12 1 hibernate_0500_CoreAPI 12 2 Hibernate API文档需要单独下载 12 3 Configuration 12 4 SessoinFactor 12 5 Session 12 6 SchemaExport (自动建表) 13 7 Query 接口 13 8 Note: 13 三种对象状态 14 1 上一个 project 14 2 三种状态的区分关键在于 14 3 三种状态: 14 4 对这三种状态需要关注的问题是在该状态下如果进行数据库的操作会发生什么结果,比 如改变属性的 14 关系映射(重要) 15 对象之间的关系 15 1 这里的关系映射指的是对象之间的关系,并不是指数据库的关系,本章解决的问题是当对象之间处于 15 2 简化问题: 15 3 —对一 15 4 —对多 15 5 组件映射 15 一对一关联 16 1 一对一单向外键关联 16 2 一对一双向外键关联 16 3 一对一单向主键关联(不重要) 17 4 一对一双向主键关联(不重要) 17 5 联合主键 17 组件映射 17 1 项目:hibernate_1100_component 17 2 对象关系:一个对象是另外一个对象的一部分 17 3 数据库表:一张表 17 4 annotation: @ Embeddable @Embbeded 17 5 xml: 使用<component,例如: 18 多对一与一对多 18 1 多对一单向关联 18 2 一对多单向关联 19 3 一对多(多对一)双向关联 19 多对多 20 1 单向关联: 20 2 双向关联: 20 关联关系中的CRUD_Cascade_Fetch 21 1 hibernate_1700_one2many_many2one_bi_crud 21 2 设定cascade以设定在持久化时对于关联对象的操作(CUD,R归Fetch管) 21 3 cascade仅仅是帮我们省了编程的麻烦而已,不要把它的作用看的太大 21 4 铁律:双向关系在程序中要设定双向关联 21 5 铁律:双向mappedBy 21 6 fetch 21 7 Update时@ManyToOne()中的cascade参数关系 22 8 Delete时@ManyToOne()中的cascade关系 22 9 O/RMapping 编程模型 23 10 要想删除或者更新先做load,除了精确知道ID之外 23 11 如果想消除关联关系,先设定关系为null.再删除对应记录,如果不删记录,该记录变成垃圾数据 23 12 练习:多对多的CRUD 23 关系映射总结 24 1 什么样的关系,设计什么样的表,进行什么样的映射 24 2 CRUD,按照自然的理解即可(动手测试) 24 集合映射(不太重要) 24 1 项目名称:hibernate_1800_Collections_Mapping 24 2 Set 24 3 List (与Set差不多 多个@OrderBy) 24 4 Map 24 继承映射(不太重要) 24 1 三种方式 24 作业: 24 1 学生课程、分数的设计(重要) 24 2 设计: 24 3 树状结构的设计(至关重要) 25 Hibernate 查询(Query Language) 26 HQL vs EJBQL 26 1 NativeSQL >HQL.> EJBQL(JPQL 1.0) > QBC(Query By Criteria) > QBE(Query By Example)" 26 2 总结:QL应该和导航关系结合,共同为査询提供服务。 26 性能优化 26 1 注意session.clear()的运用,尤其在不断分页循环的时候 26 2 1+N问题 (典型的面试题) (详见hibernate_2800_Hibernate_1+N项目) 26 3 list和iterate不同之处(//主要为了面试 详见hibernate_2900_Hibernate_list_iterate) 26 4 一级缓存和二级缓存和査询缓存(面试题)(详见hibernate_3000_Hibernate_3KindsOf_Cache) 26 5 事务并发处理(面试的意义更大) 27 课程内容 1 HelloWorld a) Xml b) annotation 2 Hibernate原理模拟 - 什么是O/R Mapping以及为什么要有O/R Mapping 3 常见的0/R框架(了解) 4 hibernate基础配置(重点) 5 ID生成策略(重点 AUTO) 6 Hibernate核心开发接口介绍(重点) 7 对象的三种状态(了解) 8 关系映射(重点) 9 Hibernate査询(HQL) 10 在Struts基础上继续完善BBS200 11 性能优化(重点) 12 补充话题 风格 1 先脉络,后细节 2 先操作,后原理 3 重Annotation,轻xml配置文件 a) JPA b) hibernate – extension 资源 1 http://www. hibernate.org 2 hibernate zh_CN文档 3 hibernate annotation references 环境准备 1 下载hibernate-distribution-3.3.2.GA-dist 2 下载hibernate-annotations-3[1].4.0.GA 3 注意阅读hibernate compatibility matrix(hibernate 网站download) 4 下载slf4jl.5.8 Hibernate HelloWorld 1 建立新java 项目,名为hibernate_0100_HelloWorld 2 学习建User-library-hibernate,并加入相应的jar包 a) 项目右键-buildpath-configure build path-add library— b) 选择User-library,在其中新建 libraray,命名为 hibernate c) 在该library中加入hibernate所需jar包 i. hibernate core ii. /required iii. slf-nop jar 3 引入mysql的JDBC驱动包 4 在mysql中建立对应的数据库以及表 a) create database hibernate; b) use hibernate; c) create table Student (id int primary key, namevarchar(20), age int); 5 建立hibernate 配置文件hibernate.cfg.xml a) 从参考文档中copy b) 修改对应的数据库连接 c) 注释掉暂时用不上的内容 6 建立Student 类 7 建立Student 映射文件 Student.hbm.xml a) 参考文档 8 将映射文件加入到hibernate.cfg.xml中 a) 参考文档 9 写测试类Main,在Main中对Student对象进行直接的存储测试 a) 参考文挡 10 FAQ: a) 要调用 new Configuration().configure().buildSessionFactory(),而不是 要省略 configure,否则会出 hibernate dialect must be set 的异常 11 Note: a) 请务必建立自己动手査文挡的能力 b) 重要的是: i. 要建立自己动手查一手文档的信心 ii. 还有建立自己动手查一手文档的习惯! iii. 主动学习,砍弃被动接受灌输的习惯! 12 建立能力 a) 错误读完整 b) 读—昔误的关键行 c) 排除法 d) 比较法 e) google 建立 Annotation 版本的 HelloWorld 1 创建teacher 表,create table teacher (id int primary key, name varhcar(20), title varchar(lO)); 2 创建Teacher 类 3 在hibernate lib 中加入annotation的jar包 a) hibernate annotaion jar b) ejb3 persistence jar c) hibernate common-annotations.jar d) 注意文裆中没有提到hibernate-common-annotations.jar 文件 4 参考Annotaion文档建立对应的注解 5 在hibernate.cfg.xml中建立映射<mapping class:.../〉 6 参考文裆进行测试(注意文裆中缺少configure()的小bug) 7 FAQ: @不给提示 a) 配置eclipse属性信息content assist-activation--加上@ What is and Why 0/R Mapping 1 JDBC操作数据库很繁琐 2 Sql语句编写并不是面向对象的 3 可以在对象和关系表之间建立关联来简化编程 4 0/R Mapping 简化编程 5 0/R Mapping跨越数据库平台 6 Hibernate_0200_OR_Mapping_Simulation 0/R Mapping Frameworks 1 hibernate 2 toplink 3 jdo 4 JPA a) 意愿统一天下 Hibernate基础配置 1 对应项目:Hibernate_0300_BasicConfiguration 2 介绍MSQL的图形化客户端 3 hibernate.cfg.xml: hbni2ddl.auto a) 先建表还是先建实体类 4 搭建日志环境并配置显示DDL语句 a) slf4j与log4j的关系:slf4j像是一个大管家,可以管理许多的日志框架,log4j是其中之一 b) 加入slf4j-log4j.jar,加入 log4j 的 jar 包,去掉 slf4-nop.jar c) 从hibernate/project/etc 目录 copy log4j.properties d) 査询hibernate文裆,日志部分,调整日志的输出策略 5 搭建jUnit环境 a) 需要注意jUnit的Bug 6 hibernate.cfg.xml:show_sql 7 hibernate.cfg.xml:format_sql <!-- 格式化显示输出sql --> <property name="format_sql">true</property> 8 表名和类名不同,对表名进行配置 a) Annotation: @Table b) xml:自己査询 9 字段名和属性相同 a) 不用写@column 与默认的@Basic效果一样 b) Xml中不用写 column 10 字段名和属性名不同 a) Annotation: @Column b) xml:自己査询 11 不需要psersistence的字段(不用列) a) Annotation:@Transient b) xml不写 12 映射日期与时间类型,指定时间精度 a) Annotation:@Temporal(参数) 参数有3种 只显示时间,只显示日期,时间日期都显示 //@Temporal(TemporalType.DATE) 只显示日期 //@Temporal(TemporalType.TIME) 只显示时间 //@Temporal(TemporalType.TIMESTAMP) 显示日期与时间 b) xml:指定 type <class name="Teacher" table="Teacher" > <id name="id" column="id"></id> <property name="name" type="time" /> </class> 13 映射枚举类型( 比较少用) a) @Enumerated @Enumerated(EnumType.ORDINAL) 枚举类型按位置数,如:0,1,2 ...存储 @Enumerated(EnumType.STRING) 枚举类型按设定值存储 b) xml:麻烦 14 字段映射的位置(field或者get方法) a) best practice:保持 field(变量定义) 和 get set 方法的一致 15 @Lob 16 课外:CLOBBLOB类型的数据存取 17 课外:Hibernate自定义数据类型 18 hibernate 类型 ID生成策略 1 对应项目:hibernate_0400_ID 2 注意: a) 我们观察hibernate生成表的结构并不是为了将来就用它生成,(可能还有自己的扩展,比如index等)而是为了明白我们应该建立什么样的表和实体类映射 3 xml生成id a) generator <id name="id" > <generator class="native"></generator> </id> b) 常用四个:native identity sequence uuid 4 注解方式:@GeneratedValue a) 自定义ID b) AUTO(直接写 @GeneratedValue 相当如native) i. 默认:对 MySQL,使用auto_increment ii. 对 Oracle使用hibernate_sequence(名称固定) c) IDENTITY(@GeneratedValue(strategy=GenerationType.IDENTITY)) d) SEQUENCE(@GeneratedValue(strategy=GenerationType.SEQUENCE)) i. @SequenceGenerator(可自定义在数据库生成指定的sequence名) @Id //在@GeneratedValue中增加 generator="teacherSEQ" @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="teacherSEQ") //"teacherSEQ"为@SequenceGenerator的标识名 //"teacherSEQ_DB"为指定到数据库生成的Sequence名 @SequenceGenerator(name="teacherSEQ", sequenceName="teacherSEQ_DB") public int getId() { return id; } e) TABLE (可以忘记) i. @TableGenerator @TableGenerator(name="teacherID", table="teacherID_DB", pkColumnName="key_value", pkColumnValue="pk_value", valueColumnName="teacher", allocationSize=1) 注:如果使用注解方式的uuid 如下: @Id @GeneratedValue(generator="teacherUUID") @GenericGenerator(name="teacherUUID", strategy="uuid") 5 FAQ; a) 用Junit测试时Hibernate Session Factory初始化异常不提示.疑似一个bug b) 用main来做测试 6 联合主键 a) Xml方式: composite-id i. 将联合主键的属性提取出来,重新编写一个pojo类(原pojo类中的id,name要删除 并新加入属性“StudentPK”) public class StudentPK implements Serializable { private String id; private String name; … … ii. 新建pojo类必须实现 java.io.Serializable 序列化接口 iii. 新pojo类要重写equals和hashCode方法 @Override public boolean equals(Object o) { if(o instanceof StudentPk) { StudentPk pk = (StudentPk)o; if(this.id == pk.getId() && this.name.equals(pk.getName())) { return true; } } return false; } @Override public int hashCode() { return this.name.hashCode(); } iv. 联合主键生成策略XML配置方法 <hibernate-mapping> <class name="com.bjsxt.pojo.Student" > <composite-id name="studentPK" class="com.bjsxt.pojo.StudentPK"> <key-property name="id"></key-property> <key-property name="name"></key-property> </composite-id> <property name="age" /> <property name="sex" /> <property name="good" type="yes_no"></property> </class> </hibernate-mapping> b) Annotation i. 前三步与Xml方式前三步一样 都要建立新pojo类 都要实现Serializable接口 重写equals和hashCode方法. ii. 方法1在新类前写@Embeddable,在原pojo类的新属性“TercherPK”的get方法前写@ld,如下 @ Embeddable public class TeacherPK implements Serializable { private String id; private String name; … … @Entity public class Teacher { private TeacherPK teacherPK ; @Id public TeacherPK getTeacherPK() { return teacherPK; } … … iii. 方法2:@EmbeddedlD(*) 新pojo类无需加注解,只需在原pojo类新属性“TercherPK”的get方法前写@EmbeddedlD即可 iv. 方法3:@ld @IdClass(*) 新pojo类无需加注解,原pojo类的id,name属性保留不变,也无需新增“TercherPK”属性。 只在id,name的get方法前都加@Id,并在原pojo类前加“@IdClass(TeacherPK).class)”,如下 @Entity @IdClass(TeacherPK.class) public class Teacher { private String id; private String name; @Id public String getId() { return id; } @Id public String getName() { return name; } ... ... 核心幵发接口介绍 1 hibernate_0500_CoreAPI 2 Hibernate API文档需要单独下载 3 Configuration a) AnnotationConfiguration b) 进行配置信息的管理 c) 用来产生SessionFactory d) 可以在configure方法中指定hibernate配置文件 e) 只气关注一个方法即:buildSessionFactory 4 SessoinFactor a) 用来产生和管理Session b) 通常情况下每个应用只需要一个SessionFactory c) 除非要访间多个数据库的情况 d) 关注两个方法即:openSession getCurrentsession i. open session每次都是新的,需要close ii. getCurrentsession从上下文找,如果有,用旧的,如果没有,建新的 1. 用途,界定事务边界 2. 事务提交自动close 3. 上下文配置可参见xml文件中 <property name="current_session_context_classs">thread</property> 4. current_session_context_class (jta、thread常用 managed、custom.Class少用) a) thread 使用connection 但数据库连接管理事务 b)jta (全称java transaction api)-java分布式事务管理(多数据库访问) jta由中间件提供(jboss WebLogic等,tomcat不支持) 5 Session a) 管理一个数据库的任务单元(简单说就是增 删 改 查) b) 方法(CRUD) i. Save() ii. delete iii. load iv. get v. get与load的区别 1. 不存在对应记录时表现不一样 2. load返回的是代理对象,等到真正用到对象的内容时才发出sql语句 3. get直接从数据库加载,不会延迟 vi. updates 1. 用来更新detached对象,更新完成后转为persistent状态 2. 更新transient对象会报错 3. 更新自己设定id的transient对象可以(数据库有对应记录) 4. persistent状态的对象只要设定(如:t.setName…)不同字段就会发生更新 5. 更新部分更改的字段 a) xml 设定 property 标签的 update 属性,annotation 设定@Column 的 updatable 属性,不过这种方式很少用,因为不灵活 b) 使用xml中的dynamic-update,JPA1.0 Annotation 没有对应的属性,hibernate 扩 展? i. 同一个session可以,跨session不行,不过可以用merge()(不重要) c) 使用 HQL(EjBQL)(建议) vii. saveOrUpdate() viii. clear方法 1.无论是load还是get,都会首先査找缓存(一级缓存),如果没有,才会去数据库査找,调用 clear()方法可以强制清除session缓存 ix. flush()方法 1. 当session的事务提交后,会强制将内存(session缓存)与数据库同步.默认情况下是session的事务提交(commit)时才同步! 2. session的FlushMode设置,可以设定在什么时候同步缓存与数据库(很少用) 例如: session.setFlushMode(FlushMode.AUTO) x. find方法已经过时! 6 SchemaExport (自动建表) 7 Query 接口 a) 参考Hibernate査询(HQLEJBQL)的内容 8 Note: a) Hibernate中涉及很多非常非常细节的区别,但在实际应用中用得极少,请大家先享受写项目的乐 趣,再来探讨这些细节问题 i. 比如save和persist的区别 ii. merge、evict 等方法 iii. 比如 refresh、lock 等 b) 建议的学习方法,动手实验 c) 细节问题参考补充视频 三种对象状态 1 上一个 project 2 三种状态的区分关键在于 a) 有没有ID b) ID在数据库中有没有 c) 在内存中有没有(session缓存) 3 三种状态: a) transient:内存中一个对象,没ID,缓存中也没有 b) persistent:内存中有,缓存中有,数据库有(ID) c) detached:内存有,缓存没有,数据库有,ID 4 对这三种状态需要关注的问题是在该状态下如果进行数据库的操作会发生什么结果,比 如改变属性的 值会不会发出update语句? a) 强烈建议动手实验 b) 进行正常人的思考 c) 绝对不要去背这些东西!背过也并不代表你有多牛! 关系映射(重要) 对象之间的关系 1 这里的关系映射指的是对象之间的关系,并不是指数据库的关系,本章解决的问题是当对象之间处于 下列关系之一时,数据库表该如何映射,编程上该如何对待(红色为重点) 2 简化问题: a) 怎么写 Annotation b) 增删改査CRUD怎么写 3 —对一 a) 单向(主键、外键) b) 双向(主键、外键) c) 中间表 4 —对多 a) 一张主表,多张子表 5 组件映射 a) @Embeddable b) @ Embedded 一对一关联 1 一对一单向外键关联 a) 项目名称:hibernate_0600_one2one_uni_fk b) Annotation: 在被约束表字段的get方法上加@0ne20ne @JoinColumn @OneToOne @JoinColumn(name="wifeid") //指定生成的数据库字段名 public Wife getWife() { return wife; } c) xml: 在被约束表的xml配置文件中加<many-to-one unique <class name="com.bjsxt.pojo.StuIdCard"> <id name="id"> <generator class="native"></generator> </id> <property name="num"/> <many-to-one name="student" column="studentId" unique="true"> </many-to-one> </class> unique="true"是保证生成的字段唯一,这样<many-to-one 也达到了一对一的效果 2 一对一双向外键关联 a) 项目名称:hibernate_0700_one2one_bi_fk^ b) Annotation: @0ne20ne(mappedBy=”…”) 规律:凡是双向关联,必设mappedBy 在Wife类中 写Husband对象属性 并添加注解@OneToOne(mappedBy="wife") mappedBy作用 是指定这个一对一关联是被Husband类的 wife属性(准确说是getWife方法)做的映射 @OneToOne(mappedBy="wife") public Husband getHusband() { return husband; } 在 类中写Wife对象属性 @OneToOne @JoinColumn(name="wifeid") //指定生成的数据库字段名 public Wife getWife() { return wife; } 此注释将由Husband表中生成wifeid字段作为fk外键,wife表中不生成额外的Husbandid字段 c) xml: many-to-one unique <one-to-one property-ref 在Student类中写StuIdCard属性, StuIdCard类中写Student属性 StuIdCard.hbm.xml文件中加 <many-to-one name="student" column="studentId" unique="true"></many-to-one> Student.hbm.xml文件中加 <one-to-one name="stuIdCard" property-ref="student"></one-to-one> 其中, property-ref 相当于mappedBy 此方式生成的StuIdCard表中包含studentid字段作为fk外键, Student表中不生成额外的字段 特别说明: 一对一单向外键关联与一对一双向外键关联在数据库的表的格式是一样的,区别在于 java程序中. 双向外键关联可通过Hibernate在两个类间互相调用彼此,而单向外键关联只能单方向调用. 3 一对一单向主键关联(不重要) a) 项目名称:hibernate_0800_one2one_uni_pk b) @primaryKeyJoinColumn c) xm展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




尚学堂hibernate学习笔记(原版整理).doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/7690705.html