小弟不明白一个道理,数据持久化hibernate是现在很红的组件,
我大概了解了下,
他持久化是把数据都写入数据库的,这就是它的持久化吗?如果是,那么稍微大一点的系统用了hibernate就不会崩溃了吗?因为有些事务可以用Session、Cookie等保存,如果用了hibernate则和数据库交互非常频繁,那系统如何承受得了?还有一点,他使用的Sql语句我觉得根本是在浪费资源,比如说一个稍微复杂点的Select,他要绕好个圈子才能查出来,特别浪费系统资源。特别不容易控制。我怎么觉得hibernate所有优点都是它的缺点?小弟不才,对hibernate没有接触过,我做.Net的,像接触Nhibernate,所以想问问各位。
我大概了解了下,
他持久化是把数据都写入数据库的,这就是它的持久化吗?如果是,那么稍微大一点的系统用了hibernate就不会崩溃了吗?因为有些事务可以用Session、Cookie等保存,如果用了hibernate则和数据库交互非常频繁,那系统如何承受得了?还有一点,他使用的Sql语句我觉得根本是在浪费资源,比如说一个稍微复杂点的Select,他要绕好个圈子才能查出来,特别浪费系统资源。特别不容易控制。我怎么觉得hibernate所有优点都是它的缺点?小弟不才,对hibernate没有接触过,我做.Net的,像接触Nhibernate,所以想问问各位。
如果需要写很复杂的sql语句,hibernate本身也支持直接书写sql语句的,不一定非要用对象来描述,这个没有问题。但对于一个系统来说大部分访问数据的业务都是比较简单的,所以正能体现hibernate的用武之地。
另外“事务可以用Session、Cookie等保存”说明你对事物根本不了解(可能你指的是会话),再去了解一下事物吧。
回楼上两位,Session我并不是不懂,他是和客户端会话用的,但Session喜欢丢值,Cookie不安全,那只能用数据持久化来解决了,但是数据库持久化缺点就是我说的那些。还有wfqqwer5213 换数据库服务器真那么容易吗?随便几个存储过程他就绝对不会移过去。何况视图、作业等等。。
每个工具的出现都是为了解决一些问题,但同时,他也会有一些缺陷或短处,因此hibernate绝对不是任何情况下都适合的。
有时候直接使用基本的jdbc进行封装或是用iBatis半自动(hibernate相比之下就是“全自动”了)的方式解决数据库访问需求也是不错的选择。
* 使我们生产效率更高,自己体会
* 使我们的开发更加面向对象,因为使用Hibernate,我们只要操纵对象,就不用写sql语句了
* 移植性比较好(关键是方言dialect的设置)
* 支持透明持久化