`

hibernate基础学习1 连接db

阅读更多
  1. 连接db
  2. 连接池
  3. db方言
  4. 自动生成数据表

1,连接db

hibernate连接db来支持我们的应用,我们可以通过不同的方法来连接到db,主要方法如下:

连接方式 简介
独立内置的连接池 不建议使用到生产环境
javax.sql.Datasource tomcat等web服务器上配置的连接池
第三方连接池 c3p0,proxool,用的最多
应用提供的连接 不推荐使用,除非历史遗留问题

原理:

 

通过接口org.hibernate.service.jdbc.connections.spi.ConnectionProvider来获得连接,如果应用需要自己提供到hibernate的连接,实现这个接口,并通过属性hibernate.connection.provider_class来指定自定义的连接池;

配置连接主要有三种方式:

配置方式 简介
属性文件 image
xml文件 image
程序配置 image

三种配置方式都可以,最常用的是使用xml文件来配置到db的连接;

使用SessionFactory的openSession()方法获得连接,配置常量在接口org.hibernate.cfg.AvailableSettings中定义.

 

2,连接池

hibernate内置的连接池算法不成熟,只是出于开发和测试的目的设计的,使用第三方的连接池稳定,性能优越,为了使用第三方的连接池,必须使用第三方的配置替换掉hibernate.connection.pool_size属性,以此来禁用hibernate内置的连接池。

c3p0连接池的配置:

 

  • hibernate.c3p0.min_size

  • hibernate.c3p0.max_size

  • hibernate.c3p0.timeout

  • hibernate.c3p0.max_statements

如果加入以上的配置,hibernate将会使用

 

org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider

来作为连接池,引用的jar包放在源码包中的lib下;

 

proxool连接池的配置:

image

如果加入了上面的配置,hibernate将会使用org.hibernate.service.jdbc.connections.internal.ProxoolConnectionProvider来作为连接池,引用包同样放在源码包的lib下面;

 

从应用服务器获取连接,使用JNDI:

 

  • hibernate.connection.datasource (required)

  • hibernate.jndi.url

  • hibernate.jndi.class

  • hibernate.connection.username

  • hibernate.connection.password

使用应用服务器的容器管理事物;

其它的配置属性可参考文档结合源码来配置

 

3,方言

尽管sql语句相对来说是标准的,但是每个数据库提供商有一套自己的符号,这可以看作是不同地方的方言,hibernate通过类

 

org.hibernate.dialect.Dialect和它的子类来处理方言以支持不同的database;

image

通过属性hibernate.dialect来指定应用连接的db的方言(种类),属性值为上表中的类名;

设想下如果连接池安装好了,hibernate将自动决定使用的方言

基于java.sql.DatabaseMetaData(从java.sql.Connection中得到),这是通过已经安装好的方言解决器来实现解析的org.hibernate.service.jdbc.dialect.spi.DialectResolve,如果你指定了方言,会优先选择指定的方言解析器。

 

4,自动生成数据表

通过SchemaExport工具可以生成数据表,它是hibernate内置的工具,可以通过映射文件生成ddl,生成的概要文件包括完整的参考条件,主键和外键,实体和表的集合映射,它也可以创建表格和通过指定的生成器生成序列;在使用之前,必须先指定方言和映射文件;

制作映射配置文件:

image

通过提供的一些元素和属性来制作映射配置文件,稍后提供一个实例来介绍简单的配置文件的编写;

生成数据表:

Configuration cfg = ....;
new SchemaExport(cfg).create(false, true);

通过以上代码,可以加载默认的配置文件,生成对应的数据表;

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics