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开放,当本身功能不够用的时候,可以自行编码扩展。 

开发者活跃,产品有稳定的发展保障。

时间: 2024-10-20 04:20:29

Hibernate与JDBC、EJB、JDO的比较的相关文章

Hibernate和JDBC、EJB比较

参考:http://m.blog.csdn.net/article/details?id=7228061 一.Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系.Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码.从这个意义上来说,Hibernate和EB不是一个范畴的东西,也不存在非此即彼的关系. 二.Hibernat

配置ssh框架启动tomcat服务器报异常Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

在Spring中配置jdbc时,引用的是dbcp.jar包,在db.properties配置文件中,使用了之前的properties配置文件的用户名username(MySql用户名) 然后在启动服务器报了如下几个异常: 1.org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [a

hibernate和jdbc的优缺点,概述

1.分析hibernate和jdbc的优缺点 jdbc的优点和缺点 缺点 1.查询代码特别繁琐 2.重复性代码特别多,频繁的try,catch 3.没有做到数据的缓存 4.sql的移植性不好(mysql语句不能使用在Oracle) 优点 速度比较快 把控性比较好 hibernate的优点和缺点     是ormapping框架 ormapping框架:数据库的操作框架 优点 1.比较简单 2.数据缓存:一级缓存    二级缓存   查询缓存 3.移植性比较好 缺点 1.因为sql语句是hiber

Hibernate与JDBC事务整合

一般大家都会使用Spring声明型事务 transactionAttributes 为 PROPAGATION_REQUIRED Hibernate 使用 HibernateTransactionManager .JDBC(iBATIS) 使用 DataSourceTransactionManager 当需要将它们整合到一个事务中的时候 普通的做法是配置统一的DataSource, Hibernate与JDBC(iBATIS) 都使用HibernateTransactionManager 坛子里

500 - org.hibernate.TransactionException: JDBC rollback failed

Could not roll back Hibernate transaction; nested exception is org.hibernate.TransactionException: JDBC rollback failed Caused by: java.sql.SQLException: Couldn't perform the operation rollback: You can't perform any operations on this connection. It

[org.hibernate.engine.jdbc.spi.SqlExceptionHelper]SQL Error: 1064, SQLState: 42000问题的解决办法

[org.hibernate.engine.jdbc.spi.SqlExceptionHelper]SQL Error: 1064, SQLState: 42000问题的解决办法. 出现这种情况的原因可能是表中的列名和MySQL的保留关键字发生了冲突.找到冲突的字段,修改即可. 也可能是列中存在空格,比如TOTAL_  REVENUE,下划线中存在空格,以至于加载列时报错. 原文地址:https://www.cnblogs.com/heyesp/p/8295303.html

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,问题解决 2018-02-16 01:07:10,086 WARN [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] - SQL Error: 0, SQLState: 220012018-02-16 01:07:10,086 ERROR [org.hibern

Hibernate和jdbc事务原理

菜鸟就是菜鸟,不遇到问题还发现不了自己错在哪了........... 昨天遇到问题,(使用的springMVC和Hibernate,事务是配置的数据源 匹配方法名来加事务的),在几个service的方法之间嵌套使用时,发现修改数据数据库没变,我以为是几个service相互嵌套 事务加在了最外层 内层的不用加了就,只需要内层的向上抛出异常便可.到最后发现内层的方法中修改新增的地方修改不了. 仔细查找发现内层的service方法名 不是按照匹配的格式写的(save/del....)之类的,然后我手动

hibernate和jdbc的区别 优缺点

JDBC与Hibernate在性能上相比,JDBC灵活性有优势.而Hibernate在易学性,易用性上有些优势.当用到很多复杂的多表联查和复杂的数据库操作时,JDBC有优势. 相同点: ◆两者都是JAVA的数据库操作中间件. ◆两者对于数据库进行直接操作的对象都不是线程安全的,都需要及时关闭. ◆两者都可以对数据库的更新操作进行显式的事务处理. 不同点: ◆使用的SQL语言不同:JDBC使用的是基于关系型数据库的标准SQL语言,Hibernate使用的是HQL(Hibernate query l