Hibernate开发与实战PDF电子书下载
- 电子书积分:14 积分如何计算积分?
- 作 者:刘伟,张利国编著
- 出 版 社:北京:电子工业出版社
- 出版年份:2009
- ISBN:9787121092848
- 页数:441 页
第1章 Hibernate起源 1
1.1 ORM框架 1
1.2 ORM核心理念 2
1.3持久层概念 3
1.4 Hibernate 3
1.4.1 Hibernate Core 4
1.4.2 Hibernate Annotations 4
1.4.3 Hibernate EntityManager 4
1.4.4 Hibernate Search 4
1.4.5 Hibernate Shards 4
1.4.6 Hibernate Validator 5
1.4.7 Hibernate Tools 5
1.4.8 NHibernate 5
1.4.9 JBoss Seam 5
1.5下载Hibernate 5
1.6使用Hibernate的第1个例子 6
1.6.1建立guestbook表 6
1.6.2新建chapter01_first项目 7
1.6.3项目文件列表 8
1.6.4编写hibernate.cfg.xml 9
1.6.5编写Guestbook.java 10
1.6.6编写Guestbook.hbm.xml 11
1.6.7 HibernateTest .java 13
1.6.8运行HibernateTest程序 14
1.6.9 chapter01_first项目的运行过程 14
第2章 Hibernate的核心接口与类 16
2.1 Configuration类 16
2.1.1 Hibernate配置文件 17
2.1.2在应用程序中设置新的属性值 18
2.1.3 Hibernate的核心配置信息 18
2.1.4数据库方言类 19
2.2 SessionFactory接口 20
2.3 Session接口 20
2.3.1 save()方法 21
2.3.2 get()方法 21
2.3.3 load()方法 22
2.3.4 update()方法 22
2.3.5 delete()方法 23
2.4 Transaction接口 24
2.5 Query接口 24
2.6 Criteria接口 25
2.7使用MyEclipse可视化开发Hibernate实例 25
2.7.1设置MyEclipse连接Oracle数据库 26
2.7.2新建项目并增加Hibernate开发支持 28
2.7.3自动生成Guestbook类与映射文件 31
2.7.4编写HibernateSessionFactoryUtil.java文件 35
2.7.5编写HibernateTest.java 36
2.7.6程序运行结果 37
2.7.7使用HQL编辑器调试HQL语句 38
2.8 Hibernate应用的开发方式 40
2.8.1自底向上,从数据库表到持久化类 40
2.8.2自上向下,持久化类到数据库表 40
2.8.3从中间出发,向上与向下发展 40
2.9设置Hibernate使用连接池 40
2.9.1设置使用Tomcat中的连接池 40
2.9.2使用C3P0连接池 41
2.9.3使用自定义连接池 41
2.10使用C3P0连接池 41
2.10.1创建chapter02 c3p0项目 41
2.10.2编辑hibernate.cfg.xml文件 42
2.10.3 chapter02 c3p0项目的运行与输出 43
2.11网络留言本V2.0 43
2.11.1建表 43
2.11.2创建guestbookv2.0项目 43
2.11.3编写StringUtil.j ava文件 44
2.11.4为项目添加Hibernate开发支持 45
2.11.5修改hibernate.cfg.xml的内容 45
2.11.6生成Guestbook .j ava与Guestbook.hbm.xml文件 45
2.11.7编写Guestbook在于Dao.java文件 46
2.11.8编写GuestbookDaoHibernate.java文件 46
2.11.9编写HibernateFactorySessionUtil .java 47
2.11.10编写AddMessageServlet.java文件 47
2.11.11编写GetMessagesServlet.java文件 49
2.11.12编写CharacterEncodingFilter.java 49
2.11.13修改web.xml文件 50
2.11.14编写headerjsp文件 51
2.11.15编写footer.htm文件 51
2.11.16使用JS Validation 52
2.11.17使用FCKeditor 54
2.11.18编写addMessage .jsp文件 56
2.11.19编写getMessages.j sp文件 58
2.11.20编写addResult.jsp文件 59
2.11.21编写error404.htm文件 59
2.11.22编写error500.jsp文件 60
2.11.23程序运行输出 60
第3章 标识符属性生成策略与对象识别 63
3.1数据库中的主键 63
3.1.1自然主键 63
3.1.2代理主键 64
3.2标识符属性 64
3.3标识符属性的生成策略 64
3.3.1 increment生成策略 64
3.3.2 identity生成策略 65
3.3.3 sequence生成策略 65
3.3.4 hilo生成策略未 65
3.3.5 seqhilo生成策略 66
3.3.6 uuid生成策略 66
3.3.7 guid生成策略 66
3.3.8 native生成策略 67
3.3.9 assigned生成策略 67
3.3.10 foreign生成策略 67
3.3.11选择标识符属性生成策略 67
3.4映射复合主键 68
3.4.1数据准备 68
3.4.2使用属性映射复合主键 68
3.4.3使用主键类映射复合主键 71
3.5对象识别 74
3.5.1 Java中的对象识别 74
3.5.2识别数据库中数据 75
3.5.3识别Hibernate中的持久化对象 75
3.6 Commons lang buider 78
3.6.1安装Commonclipse 78
3.6.2使用Commonclipse 79
第4章 持久化对象生命周期 80
4.1持久化对象生命周期的状态 80
4.1.1 Transient状态 80
4.1.2 Persistent状态 81
4.1.3 Detached状态 81
4.1.4 Removed状态 82
4.1.5 Session对象的“脏”数据检查 83
4.2 Session接口的核心方法 83
4.2.1 saveOrUpdate()方法 83
4.2.2 merge()方法 84
4.2.3 flush()方法 85
4.2.4 close()方法 85
4.3不可更改的持久化对象 86
第5章 OSIV与泛型DAO模式 87
5.1 OSIV模式 87
5.1.1使用 Servlet过滤器实现OSIV模式 88
5.1.2配置web.xml文件 89
5.2泛型DAO的设计与实现 89
5.2.1编写泛型DAO接口 90
5.2.2编写泛型DAO的实现类 90
5.2.3使用GenericDao接口 91
5.2.4使用GenericDaoHibernate类 92
5.3网络留言本V2.1 92
5.3.1新建guestbookv2.1项目 92
5.3.2建立admin表 93
5.3.3文件列表 93
5.3.4生成Admin .java与Admin.hbm.xml文件 94
5.3.5增加hibernate.cfg.xml文件 95
5.3.6编写AdminDao.java文件 95
5.3.7编写AdminDaoHibernate .java文件 95
5.3.8修改GetMessagesServlet .java文件 96
5.3.9编写AdminUserServlet .java文件 96
5.3.10编写AuthenticationFilter java文件 98
5.3.11编写ManageServlet.java文件 99
5.3.12编写login .j sp文件 100
5.3.13修改validation-framework.js文件 101
5.3.14修改validation-config.xml文件 101
5.3.15 编写loginFail.jsp文件 102
5.3.16编写list .jsp文件 102
5.3.17编写edit.jsp文件 103
5.3.18编写editResult.jsp文件 104
5.3.19编写deleteResult.jsp文件 105
5.3.20修改web.xml文件 105
5.3.21程序运行结果 107
第6章 Hibernate的集合映射 108
6.1 Set集合映射 108
6.1.1 Set接口 108
6.1.2 Set映射 110
6.2 List映射 115
6.2.1 List接口 115
6.2.2 List映射 116
6.3 Bag映射 118
6.4 IdBag映射 121
6.5 Map映射 123
6.5.1 Map接口 123
6.5.2 HashMap 123
6.5.3 LinkedHashMap 124
6.5.4 TreeMap 124
6.5.5 Map映射 125
6.6排序集合映射 128
6.6.1利用<set>或<map>标签的sort属性排序 128
6.6.2利用SQL的order by子句排序 130
第7章 组件映射 132
7.1组件(Component)映射的单向关联 132
7.1.1数据准备 132
7.1.2编写Profile.java文件 133
7.1.3编写User java文件 133
7.1.4编写User.hbm.xml文件 134
7.1.5编写HibernateTest .java文件 135
7.1.6程序运行输出 136
7.2组件映射的双向关联 137
7.3组件集合映射 138
7.3.1数据准备 138
7.3.2编写Image.java文件 139
7.3.3编写Product .j ava文件 140
7.3.4编写Product.hbm.xml文件 141
7.3.5编写HibernateTest.java文件 142
7.3.6组件集合映射的双向关联 144
第8章 映射多对一及一对多关联关系 145
8.1多对一单向关联 145
8.1.1数据准备 145
8.1.2编写Category.java与Category.hbm.xml文件 146
8.1.3编写Product .java与Product.hbm.xml文件 147
8.1.4编写HibernateTest.java文件 148
8.1.5 outer-join属性 151
8.2一对多单向关联 151
8.2.1数据准备 151
8.2.2编写Product.java与Product.hbm.xml文件 152
8.2.3编写Categoryjava与Category.hbm.xml文件 152
8.2.4编写HibernateTest.java文件 154
8.3级联 156
8.4一对多双向关联 157
8.4.1数据准备 158
8.4.2编写Product.ava与Product.hbm.xml文件 158
8.4.3编写Category.java与Categoryhbm.xml文件 158
8.4.4编写HibernateTest .java文件 159
8.5控制反转(Inverse) 160
第9章 映射一对一关联关系 163
9.1共享主键关联 163
9.1.1数据准备 163
9.1.2编写Userjava与User.hbm.xml文件 164
9.1.3编写Profile.java与Profile.hbm.xml文件 165
9.1.4编写HibernateTest.java文件 166
9.2唯一外键关联 168
9.2.1准备数据 168
9.2.2编写Profile .java与Profile.hbm.xml文件 169
9.2.3编写User java与User.hbm.xml文件 169
9.2.4编写HibernateTest.java文件 170
第10章 映射多对多关联关系 171
10.1多对多单向关联 171
10.1.1准备数据 171
10.1.2编写Product .java与Product.hbm.xml文件 173
10.1.3编写Orderjava与Order.hbm.xml文件 173
10.1.4 Order与Product的类图 175
10.1.5编写HibernateTest.j ava文件 175
10.2多对多双向关联 177
10.2.1准备数据 178
10.2.2编写Orderjava与Order.hbm.xml文件 178
10.2.3编写Product.java与Product.hbm.xml文件 179
10.2.4 Order与Product类的类图 179
10.2.5编写HibernateTest.java文件 180
10.3在多对多关联中使用组件集合映射 181
10.3.1准备数据 182
10.3.2编写Product .java与Product.hbm.xml文件 182
10.3.3编写OrderItem.j ava文件 182
10.3.4编写Order.java与Order.hbm.xml文件 183
10.3.5 Product、 Order与OrderItem的类图 185
10.3.6编写HibernateTest.java文件 185
10.4分拆多对多关联为两个一对多关联 187
10.4.1数据准备 187
10.4.2编写Product.java与Product.hbm.xml文件 187
10.4.3编写OrderItem .java与Orderltem.hbm.xml文件 187
10.4.4编写Orderjava与Order.hbm.xml文件 188
10.4.5编写HibernateTest.java文件 189
第11章 Criteria查询 190
11.1准备数据 190
11.1.1创建guestbook、 product和category表 190
11.1.2在guestbook、 product和category表中添加演示数据 191
11.1.3实例文件 191
11.2 Criteria的基本使用 192
11.2.1 Criteria接口的主要方法 192
11.2.2 Criterion接口 193
11.2.3排序查询结果 194
11.2.4分页显示数据 194
11.2.5查询一条记录 195
11.2.6通过关联对象建立查询条件 196
11.2.7 Restrictions类 196
11.2.8条件“或”方式组合查询条件 197
11.2.9使用原生SQL语句设置查询条件 198
11.2.10统计函数查询 198
11.2.11统计函数组合查询条件 199
11.2.12获取多个统计函数的值 199
11.2.13分组查询 200
11.2.14分组统计 200
11.2.15 为分组统计结果指定别名 201
11.2.16投影查询 202
11.2.17使用Property类的forName()方法实现分组统计 203
11.3使用DetachedCriteria对象实现离线查询 204
11.4根据示例对象查询 205
第12章 HQL与Native SQL查询 206
12.1准备数据 206
12.2 Query接口 206
12.2.1 list()方法 207
12.2.2 iterate()方法 207
12.2.3选择list()和iterate()方法 208
12.2.4使用setMaxResults()和setFirstResult()方法实现分页 208
12.2.5使用uniqueResult()方法读取唯一记录 209
12.3 HQL基础 209
12.3.1查询所有持久化对象 209
12.3.2投影查询 210
12.3.3使用别名 212
12.3.4使用distinct关键字 213
12.3.5限定查询的条件 213
12.3.6数据排序 216
12.3.7使用参数占位符 216
12.3.8使用统计函数 217
12.3.9使用函数 218
12.4 HQL的批量更新 218
12.5 HQL中的连接查询 219
12.5.1使用交叉连接 219
12.5.2使用内连接 220
12.5.3使用左外连接 221
12.5.4使用右外连接 222
12.5.5迫切内连接 223
12.5.6迫切左外连接 225
12.6命名的HQL 225
12.7使用SQL 226
12.7.1 SQL查询 226
12.7.2 SQL更新记录 228
12.7.3 SQL删除记录 228
12.7.4命名的SQL 229
12.7.5调用存储过程 229
12.8使用SQLQuery对象实现动态表映射 230
12.8.1准备数据 230
12.8.2编写Loglnfo.java文件 231
12.8.3编写Loglnfo.hbm.xml文件 231
12.8.4编写HibernateTest.java文件 232
12.9在Hibernate中调用数据库存储过程 233
12.9.1准备数据 233
12.9.2调用数据库存储过程 234
12.10在Hibernate中使用JDBC 234
12.10.1准备数据 235
12.10.2调用数据库存储过程 235
第13章 Hibernate的事务管理 236
13.1数据库事务 236
13.1.1事务的特性 237
13.1.2编程式与声明式事务 237
13.1.3在JDBC中使用事务 237
13.1.4并发访问数据可能引发的问题 239
13.1.5事务隔离级别 241
13.2 Hibernate中的事务 243
13.2.1在Hibernate中事务管理API 243
13.3锁 244
13.4 Hibernate中的锁定模式 245
13.5悲观锁 245
13.5.1使用Query对象的setLockMode()方法设置悲观锁 245
13.5.2使用Sessoin对象的lock()方法设置悲观锁 246
13.6乐观锁 246
13.6.1以版本号方式实现乐观锁 247
13.6.2时间戳实现乐观锁 250
第14章 继承映射 252
14.1继承关系层次一个表 253
14.1.1创建delivery表 253
14.1.2编写Delivery.java文件 254
14.1.3编写PostDelivery. java文件 254
14.1.4编写ExpressDelivery. java文件 254
14.1.5编写Delivery.hbm.xml文件 254
14.1.6编写HibernateTest .java文件 255
14.1.7继承关系层次一个表的优缺点 257
14.2每个具体类一个表 257
14.2.1创建post_delivery和express delivery表 258
14.2.2编写Delivery.java文件 258
14.2.3编写 PostDelivery.java文件 259
14.2.4编写ExpressDelivery.java文件 259
14.2.5编写Delivery.hbm.xml文件 259
14.2.6编写HibernateTest.java文件 260
14.2.7每个具体类一个表的优缺点 261
14.3每个子类一个表 261
14.3.1创建delivery、 post_ delivery和express_delivery表 262
14.3.2编写Delivery.java文件 262
14.3.3编写PostDelivery. java文件 263
14.3.4编写ExpressDelivery. java 263
14.3.5编写Delivery.hbm.xml文件 263
14.3.6编写HibernateTest.java文件 263
14.4每个子类一个表的优缺点 265
14.5小结 265
第15章 Hibernate过滤器 266
15.1概念 266
15.2配置 266
15.2.1使用<filter-def>标签定义过滤器 266
15.2.2使用<filter>标签声明使用过滤器 267
15.3调用Hibernate过滤器 267
15.3.1 Session接口中与Filter对象有关的方法 267
15.3.2调用Hibernate过滤器的示例 268
15.4小结 269
第16章 数据拦截与事件监听 270
16.1拦截器 270
16.1.1 Interceptor接口的方法 270
16.1.2使用拦截器实现审计日志 271
16.2 Hibernate的事件监听 274
16.2.1应用Hibernate事件监听器 275
16.2.2使用监听器实现审计日志 275
16.2.3事件监听与拦截器的比较 280
第17章 Hibernate的缓存 281
17.1持久层缓存的概念 281
17.1.1持久层缓存的级别 281
17.2 Hibernate的一级缓存 282
17.2.1一级缓存的实现原理 283
17.2.2管理一级缓存 283
17.3 Hibernate的二级缓存 284
17.3.1二级缓存的策略 285
17.3.2应用EHCache作为二级缓存 286
17.3.3缓存集合对象 288
17.3.4管理二级缓存 289
17.4查询缓存 290
17.4.1查询缓存的实现原理 290
17.4.2使用查询缓存 291
17.5应用memcached作为二级缓存 292
17.5.1 memcached 292
17.5.2 Hibernate-memcached 292
17.5.3在Hibernate应用中使用memcached 293
17.6缓存对get()、 load()、 list()和iterator()方法的影响 295
17.7小结 296
第18章 Hibernate的性能优化 297
18.1使用dynamic-insert与dynamic-update 297
18.1.1应用<class>标签的dynamic-insert与dynamic-update属性 298
18.2延迟加载 298
18.2.1持久化对象的延迟加载 299
18.2.2集合对象的延迟加载 301
18.2.3属性的延迟加载 303
18.2.4解决org.hibernate.Lazy InitializationException违例问题 303
18.3集合对象的抓取策略 304
18.3.1查询抓取 305
18.3.2子查询抓取 307
18.3.3连接查询抓取 308
18.3.4批量抓取 309
18.3.5 Hibernate的“1+N”问题 310
第19章 Hibernate Annotations组件 312
19.1下载Hibernate Annotations组件 312
19.2使用 Annotations实现一对多双向关联映射 313
19.2.1准备数据 313
19.2.2在当前项目中添加Hibernate Annotations类库 313
19.2.3编写Product.java和Category.java文件 313
19.2.4编写hibernate.cfg.xml文件 317
19.2.5编写HibernateTest.java文件 317
19.3 Hibernate Annotations组件核心注解 318
19.3.1注解属性或者方法 318
19.3.2 Hibernate Annotations组件核心注解 318
19.3.3注解VS映射文件 319
19.4 Hibernate EntityManager 320
19.4.1 Java Persistence API 320
19.4.2下载Hibernate EntityManager 320
19.4.3应用Hibernate EntityManager 320
第20章 Hibernate Search组件 323
20.1搜索引擎 323
20.1.1全文检索引擎 323
20.1.2目录索引搜索引擎 324
20.1.3元搜索引擎 324
20.2 Lucene 324
20.3 Hibernate Search组件 325
20.3.1 Hibernate Search组件的特点 325
20.3.2使用Hibernate Search组件 325
20.4使用Luke工具查看索引数据 330
20.5中文分词 331
20.5.1概念 331
20.5.2中文分词的基本机制 331
20.5.3 Hibernate Search使用第三方中文分词组件 332
第21章 Hibernate与 Struts 2 334
21.1 Struts 2框架 334
21.1.1 Struts 2框架的特点 335
21.1.2下载Struts 2 335
21.2编写第1个Struts 2程序 336
21.2.1新建Web项目添加Struts类库 336
21.2.2修改web.xml文件配置Struts2的过滤器 337
21.2.3编写login.jsp文件 337
21.2.4编写LoginAction .java文件 338
21.2.5编写loginResult .jsp文件 340
21.2.6编写struts.xml文件 340
21.2.7项目部署后的运行效果 341
21.3 Struts 2的内部结构 342
21.3.1 Struts 2的处理流程 343
21.4网络留言本V2.2 344
21.4.1新建guestbookv2.2项目 344
21.4.2所需文件列表 344
21.4.3编写Guestbook Action .java文件 345
21.4.4编写AdminAction .java文件 347
21.4.5编写struts.xml文件 348
21.4.6修改web.xml文件 349
21.4.7修改addMessage.jsp文件 350
21.4.8修改login.jsp文件 351
21.4.9部署运行项目 352
第22章 Hibernate与Spring Framework 353
22.1 Spring简介 353
22.1.1 Spring的子模块 353
22.1.2下载Spring 354
22.2 IoC容器 355
22.2.1容器的概念 355
22.2.2 IoC设计模式 355
22.2.3 Spring的IoC容器 356
22.2.4使用Spring IoC容器示例 356
22.3 Spring AOP 359
22.3.1 OOP的不足 359
22.3.2 AOP技术 360
22.3.3 Spring AOP 360
22.3.4 AOP的专有名词 361
22.3.5 Spring AOP中的常用通知类型 361
22.3.6使用AspectJ 5的注解实现Spring AOP 362
22.3.7 AspectJ的切入点表达式语法 364
22.4 Spring对Hibernate的支持 365
22.4.1简化获取SessionFactory对象 365
22.4.2 HibernateTemplate类 368
22.4.3 HibernateDaoSupport类 371
22.4.4 Spring对事务的支持 372
22.4.5声明式事务的参数定义 373
22.4.6使用Spring注解管理事务的示例 375
22.5 Guestbook v2.3版 377
22.5.1新建Guestbookv2.3项目 377
22.5.2文件列表 378
22.5.3修改web.xml文件 378
22.5.4修改DAO实现类 379
22.5.5修改Servlet文件 380
22.5.6编写ApplicationContext.xml 380
22.5.7项目运行输出 381
22.6小结 382
第23章 KH网络博客系统 383
23.1系统需求分析 383
23.1.1确定用户 383
23.1.2系统功能 384
23.2系统设计 384
23.2.1系统结构设计 384
23.2.2数据库设计 385
23.2.3设计域模型 390
23.2.4持久层设计 391
23.2.5业务逻辑层设计 392
23.2.6表现层的设计 392
23.2.7 Action类设计 393
23.2.8权限控制设计 394
23.2.9分页设计 394
23.2.10数据校验设计 397
23.2.11订阅博客功能设计 399
23.2.12设置开发环境 399
23.2.13 Java包名与组织结构设计 400
23.3编码实现 400
23.3.1创建项目 400
23.3.2域模型代码 400
23.3.3持久层的相关代码 403
23.3.4业务逻辑层的相关代码 412
23.3.5表现层的相关代码 421
23.4部署运行KH网络博客系统 440
23.5小结 441
- 《Maya 2018完全实战技术手册》来阳编著 2019
- 《区块链DAPP开发入门、代码实现、场景应用》李万胜著 2019
- 《Python3从入门到实战》董洪伟 2019
- 《大数据Hadoop 3.X分布式处理实战》吴章勇,杨强 2020
- 《星空摄影后期实战》阿五在路上著 2020
- 《高含硫气藏开发腐蚀控制技术与实践》唐永帆,张强 2018
- 《半小时漫画股票实战法》财经杂质著 2019
- 《深度学习与飞桨PaddlePaddle Fluid实战》于祥 2019
- 《数字插画实战 人像创作30例》王鲁光著 2019
- 《2017国家执业药师资格考试 全考点实战通关必备 中药学综合知识与技能 第3版》国家执业药师资格考试命题研究专家组 2017
- 《市政工程基础》杨岚编著 2009
- 《家畜百宝 猪、牛、羊、鸡的综合利用》山西省商业厅组织技术处编著 1959
- 《《道德经》200句》崇贤书院编著 2018
- 《高级英语阅读与听说教程》刘秀梅编著 2019
- 《计算机网络与通信基础》谢雨飞,田启川编著 2019
- 《看图自学吉他弹唱教程》陈飞编著 2019
- 《法语词汇认知联想记忆法》刘莲编著 2020
- 《培智学校义务教育实验教科书教师教学用书 生活适应 二年级 上》人民教育出版社,课程教材研究所,特殊教育课程教材研究中心编著 2019
- 《国家社科基金项目申报规范 技巧与案例 第3版 2020》文传浩,夏宇编著 2019
- 《羊脂球 莫泊桑短篇小说选》(法)莫泊桑著;张英伦译 2010
- 《电子测量与仪器》人力资源和社会保障部教材办公室组织编写 2009
- 《少儿电子琴入门教程 双色图解版》灌木文化 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019
- 《通信电子电路原理及仿真设计》叶建芳 2019
- 《高等院校旅游专业系列教材 旅游企业岗位培训系列教材 新编北京导游英语》杨昆,鄢莉,谭明华 2019
- 《电子应用技术项目教程 第3版》王彰云 2019
- 《中国十大出版家》王震,贺越明著 1991
- 《近代民营出版机构的英语函授教育 以“商务、中华、开明”函授学校为个案 1915年-1946年版》丁伟 2017