Hibernate与JDBC、EJB、JDO的比较
常用的数据库操作包括:JDBC、EJB、JDO以及Hibernate。它的各有优缺点:
(1) JDBC:多数Java开发人员是用JDBC来和数据库进行通信,它可以通过DAO模式进行改善和提高。但这种方式在大型应用程序中不容易操作使用,且维护起来相当困难。
(2) EJB:EJB通常是在数据持久技术上的第二个选择,它是通过entitybeans来对数据进行持久化。首先就需要购买一个价位合理的EJB容器一J2EE应用服务器,也可以采用开源项目的免费EJB容器,比如JBOSS。但是很多商业EJB容器的性能和技术支持不太好,在EJB中实现JDBC也比较复杂。
(3) JDO:JDO的出现似乎有了一些改观,但是,JDO没有一个好的开源免费实现。好的产品部是商业产品,并且在国内没有销售和技术支持。JDO也不是一个轻量级封装.它建立的持久层框架,很不完善。再加上JDO的标准还很不完善以及严重的产品分裂问题,使得很多操作方式很是烦琐。
(4) Hibernate:Hibernate这种持久框架在某些方面有很大的不同,它不需要任何容器,提供简单易用的API,也解决了JDO的很多缺陷。作为一个良好的ORM ,它有如下特点:
透明地提供对象与关系数据库的映射,以统一的接口方式支持多种数据库。
缓存机制,复杂的缓存机制和锁定策略,使针对数据库操作大大减少。
开源免费的License,可以在需要的时候研究源代码,改写源代码,进行功能的定制。
轻量级封装,避免引入过多复杂的问题,容易调试,减轻程序员的负担。
具有可扩展性,API开放,当本身功能不够用的时候,可以自行编码扩展。
开发者活跃,产品有稳定的发展保障。
Hibernate与JDBC、EJB、JDO的比较的更多相关文章
- Hibernate和JDBC、EJB比较
参考:http://m.blog.csdn.net/article/details?id=7228061 一.Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App S ...
- JDO持久 (jdbc ejb)
转自:http://blog.csdn.net/liuzhigang1237/article/details/6305113 JDO快速入门 Java数据对象(Java Data Objects,JD ...
- 简述 Hibernate 和 JDBC 的区别、优缺点
1.hibernate是一个开源的.采用面向对象的思想实现ORM映射框架,它对jdbc进行了一层封装,对于数据库的连接.关闭.数据的持久化(增删改查).事务的管理都进行了封装,使得程序开发的时候可以用 ...
- 配置ssh框架启动tomcat服务器报异常Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
在Spring中配置jdbc时,引用的是dbcp.jar包,在db.properties配置文件中,使用了之前的properties配置文件的用户名username(MySql用户名) 然后在启动服务 ...
- 关于org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Incorrect string value: '\xE5\x91\xBC\xE5\x92\x8C...' for column 'visit_addr' at row 1的问题
当我们使用Hibernate框架像表中插入一条新的数据时控制台可能会报这样的错误“org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Incorrec ...
- [org.hibernate.engine.jdbc.spi.SqlExceptionHelper]SQL Error: 1064, SQLState: 42000问题的解决办法
[org.hibernate.engine.jdbc.spi.SqlExceptionHelper]SQL Error: 1064, SQLState: 42000问题的解决办法. 出现这种情况的原因 ...
- Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
使用hibernate的时候,报出这个错误Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvir ...
- ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] - Data truncation: Incorrect datetime value: '' for column 'pubdate' at row 1
之前的Connector/J版本是:mysql-connector-java-5.0.4-bin.jar 后来换成mysql-connector-java-5.1.45-bin.jar,问题解决 20 ...
- Hibernate与JDBC事务整合
一般大家都会使用Spring声明型事务 transactionAttributes 为 PROPAGATION_REQUIRED Hibernate 使用 HibernateTransactionMa ...
随机推荐
- Python之实现简单计算器功能
一,需求分析 要求计算一串包含数字+-*/()的类似于3*( 4+ 50 )-(( 100 + 40 )*5/2- 3*2* 2/4+9)*((( 3 + 4)-4)-4)表达式的数值 二,知识点 正 ...
- delphi =------报错
关于delphi软件运行出现Invalid floating point operation的错误的解决办法 关于delphi软件运行出现Invalid floating point operatio ...
- mysql_表内容_操作
1.增 语法:insert into 表 (列名,列名...) values (值,值...) # 插入单条数据 insert into 表 (列名,列名...) values (值,值...) # ...
- Druid对数据库密码加密的坑
背景: 在对已有项目搭建本地环境,修改了本地ip端口和数据库帐号密码(使用了明文). 然后项目一直跑不起来,还抛出各种异常,经过分析发现主要错在这里:druid java.lang.IllegalAr ...
- Java 集合框架之 JDK 1.5 新特性
forEach 循环 多用于元素迭代. 适用范围: - 数组 - 实现 Iterable 接口的集合类 格式: for(类型 变量 : Collection 集合 | 数组) { } 传统 for 和 ...
- Selenium 安装与卸载
安装: 在cmd中键入pip install selenium==3.6.0(等号后面的为版本号),并点击回车,当出现Successfully installed selenium-3.6.0即表示已 ...
- tornado下模板引擎的使用
模板引擎 Tornado中的模板语言和django中类似,模板引擎将模板文件载入内存,然后将数据嵌入其中,最终获取到一个完整的字符串,再将字符串返回给请求者. Tornado =的模板支持“控制语句” ...
- python16_day16【Django_ORM、模板】
一.ORM 1.MySQL配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'books', #你 ...
- Linux用户、群组及权限
由于对文件的操作需要切换到相应文件夹下进行,所以对文件内容的修改,最基本的是需要其文件夹执行的权限. 文件夹的读权限(read)可以独立行使,但是对文件夹内容的写权限(对其内文件的新建.删除.重命名) ...
- 关于线程安全Dictionary
使用Dictionary时, 是线程不安全的(). 会出现以下的问题, 导致IIS挂掉: 其实DicMapper是不为NUL的, DicMapper["aaasdfasdfasdfzxc ...