首页 > 代码库 > Hibernate学习2之继承映射与C3P0连接池

Hibernate学习2之继承映射与C3P0连接池

一、继承映射的需要

关系数据库的表之间不存在继承关系,

但为了将面向对象中的继承关系映射到关系数据库中,

可以使用以下三种继承映射策略:

-每个继承层次一张表

-每个具体类一张表

-每个类一张表。

二、对比

--每个继承层次一张表:

(优点)最简单、执行效率最高(因为无需进行任何关联操作)

(缺点)存在冗余字段;在数据表中需要加入额外的区分各个类的字段;

同时不允许为子类成员属性对应的字段定义为not null约束。

--每个具体类一张表:

(优点)数据结构清晰,且可以对子类成员属性映射的字段定义not null 约束

(缺点)子表的主键不能重复,不能使用数据库的自增方式生成主键

--每个子类一张表:

(优点)数据结构层次清晰,没有冗余,且可以对子类的成员属性映射的字段定义not null约束

(缺点)类的继承层次比较多时,需要关联的表也越多查询性能不如每个继承构成一张表

三、c3p0连接池

--连接池的需要:直接向数据库申请、释放连接时要降低性能的,因为不适用连接池,

那么每一次数据访问请求都必须经历创建数据库连接、打开数据库、存取数据和关闭数据库连接等步骤,

而连接并打开数据库是一件即消耗资源又费时的工作,当频繁发生数据库操作时,就会导致系统性能的急剧下降,

所以需要连接池这个代理。(参考:http://blog.csdn.net/msg_java2011/article/details/6682351)

--数据库连接池的主要操作:

1.建立数据库连接池对象(服务器启动)

2.