hibernate基础学习1 访问database

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

1,连接db

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

连接方式简介
独立内置的连接池不建议使用到生产环境
javax.sql.Datasourcetomcat等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);

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

转载于:https://my.oschina.net/lifc/blog/168742

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值