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

一、继承映射的需要

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

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

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

-每个继承层次一张表

-每个具体类一张表

-每个类一张表。

二、对比

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

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

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

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

--每个具体类一张表:

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

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

--每个子类一张表:

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

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

三、c3p0连接池

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

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

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

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

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

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

2.

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

时间: 2024-08-26 08:37:58

Hibernate学习2之继承映射与C3P0连接池的相关文章

hibernate.cfg.xml以及C3P0连接池的配置

<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hib

14、Hibernate对c3p0连接池的配置

1.Hibernate3的c3p0连接池的配置 在hibernate.cfg.xml中配置如下信息: <!-- 1. 数据库连接配置 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql:///

c3p0连接池的学习

c3p0的学习 学习 学习 ! 首先c3p0的基本了解,在之前的web项目学习中都是直接使用jdbc的 DriverManager进行oracle数据库的连接,每次执行操作都会建立一个新的连接,在操作完成后,通过判断释放连接,但是如果处于高并发的情况下,就可能会造成服务器崩溃的后果,因为大量的资源同一时间得不到释放:以上是我自己对普通连接的学习和看法,采用c3p0连接池后,连接池会控制连接池内的连接对象数,以下是c3p0的xml配置文件: 1 <?xml version="1.0"

(30)java web的hibernate使用-c3p0连接池配置

hibernate支持c3p0连接池 需要导入c3p0的jar包 <!-- 配置连接驱动管理类 --> <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> <!-- 配置连接池参数信息 --> <!-- 最小链接数 --> <property name

java学习笔记—c3p0连接池与元数据分析(42)

第一步:导入c3p0包 第二步:在classpath目录下,创建一个c3p0-config.xml <?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <!-- 默认配置,只可以出现一次 --> <default-config> <!-- 连接超时设置30秒 --> <property name="checkoutTimeout"

c3p0连接池的使用

C3P0:(★) hibernate和spring使用 有自动回收空闲连接的功能. 使用步骤: 1.导入jar包(c3p0-0.9.1.2.jar) 2.使用api a.硬编码(不推荐) new ComboPooledDataSource() b.配置文件 配置文件的名称:c3p0.properties 或者 c3p0-config.xml 配置文件的路径:src下 配置文件中的名字要少用:c3p0.user()格式 编码只需要一句话 new ComboPooledDataSource()//使

JNDI配置c3p0连接池

CNDI是什么呢? 就是java命名和目录接口,是SUN公司提供的一种标准的Java命名系统接口. 不好理解?简单说呢,他就是一个资源,放在tomcat里面的一个资源,今天我们就把数据库连接池放到tomcat中,当然你也可以放别的东西,比如Been. ok!开始 首先我们新建web项目: 新建项目叫:JNDI_demo 然后在tomcat目录:F:\apache-tomcat-5.5.25\conf\Catalina\localhost下,创建一个资源. 命名就是:项目名.xml 在我这就叫:J

一次c3p0连接池连接异常错误的排查

最近写了一个数据库采集程序,大概过程是将SQLSERVER数据库的数据定时采集到Oracle数据库.1小时出一次数据,每次数据量在2W左右.环境采用Sping3+hibernate4,数据库连接池采用C3p0 奇怪的时候每隔一段时间都会报:"c3p0 connection is already closed" 我开始的数据库连接池配置如下:oracle数据库开启事务,而采集的sqlserver数据库没有开启事务 jdbc.driverClass=oracle.jdbc.OracleDr

网络协议 finally{ return问题 注入问题 jdbc注册驱动问题 PreparedStatement 连接池目的 1.2.1DBCP连接池 C3P0连接池 MYSQL两种方式进行实物管理 JDBC事务 DBUtils事务 ThreadLocal 事务特性 并发访问 隔离级别

1.1.1 API详解:注册驱动 DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用 原因有2个: >导致驱动被注册2次. >强烈依赖数据库的驱动jar 解决办法: Class.forName("com.mysql.jdbc.Driver"); 1.1.2 API详解:java.sql.Statement接口: 操作sql语句,并返回相应结果 String sql = "某SQL语句&qu