在学习hibernate中对hibernate的一点疑问

butterwx 2006-06-07 10:18:53
我原来 是作 c/s 结构的程序开发 现在学习 b/s 结构程序开发但是学习中hibernate产生一点疑问,为什么在连接和使用数据库时,不直接连接数据库和不直接使用使用sql 语句,而是要进行数据映射呢?这样如果对某一个对象增加一个属性的时候和需要改变映射关系的时候,需要修改地方就太多了,并没有直接连接数据库和直接使用使用sql 语句那样方便.....hibernate 的优点到底是什么呢?
希望各位朋友解决我心中的疑惑...谢谢
...全文
429 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
struts+newxy是struts+hibernate的替代方案 http://www.newxy.net
didoleo 2006-06-17
  • 打赏
  • 举报
回复
"如果 能把name,age,gender 字段的内容 可放进可索引的一个数据结构(如list,collection)中进行操作 绕开hibernate 又有什么不可以呢!"

上面这句话在有些场景似乎有点道理,比如说当你一句sql返回的不是某一个表的字段,是多个表的字段,那将没有一个hibernate的pojo与之对应。这个时候你可以考虑用你自己的数据结构来封装记录。

但不是所有的场景都要这样,hiberbate会给你带来很多方便,否则没人会用他。
racke 2006-06-16
  • 打赏
  • 举报
回复
这个不符合面向对象的规则, hibernate 是基于O(object)/R(relationship)的,你完全可以写一些逻辑做到这点。完全没必要绕过这步。
butterwx 2006-06-16
  • 打赏
  • 举报
回复
对 ...楼上说得很对...我就是想这样作....
racke 2006-06-16
  • 打赏
  • 举报
回复
如果简单的话一句 sql + JDBC 搞定。不要用hibernate,如果表和表的关系没那么复杂,对持久层的要求没那么高的话不需要hibernate
butterwx 2006-06-16
  • 打赏
  • 举报
回复
如果 能把name,age,gender 字段的内容 可放进可索引的一个数据结构(如list,collection)中进行操作 绕开hibernate 又有什么不可以呢!
butterwx 2006-06-15
  • 打赏
  • 举报
回复
racke()
楼主什么叫 '附加对象类'
附加对象类 ,我的意思是 比如 list 或 collection 使用add(int index, Object element)时
element 为class也就是
public CLASS element{
PRIVATE ......
PUBLIC SET....(){
}
PUBLIC GET.....(){
}
这样的类
而不能 直接
add(数据项,key )呢.....
必须用类转一下?

zeq258 2006-06-15
  • 打赏
  • 举报
回复
这个问题,不好回答!

如果楼主对面向对象有了比较深的认识,

那么,你就会习惯于面向对象的操作,那么你的持久化就是保存对象,而不是执行 sql 语句。

但是,这不是 hibernate 的全部好处,

既然它是面向对象的,那么 POJO 就可以继承 其他的类。

继而显示面向对象的其他的好处。

等等。。。。。。

http://www.huihoo.com/framework/hibernate/reference-v3_zh-cn/
racke 2006-06-15
  • 打赏
  • 举报
回复
你是指
public CLASS element{
PRIVATE ......
PUBLIC SET....(){
}
PUBLIC GET.....(){
}
为附加类?举个例子
select s.name, s.age, s.gender from student.s.
你是不想创建
class Student{
String name;
int age;
...
}
而直接把所有的name,age,gender分别放在数据结构中?

racke 2006-06-14
  • 打赏
  • 举报
回复
楼主什么叫 '附加对象类'
butterwx 2006-06-13
  • 打赏
  • 举报
回复
racke 建议看的书 我已经看了...
本人十分感谢 racke kill8108 的帮助 .....我以前的想法错了.
但是本人还是有一点疑问 就是用jdbc 提取 数据 并将数据 放进 list 或 collection 中 必须要附加对象类吗.不附加对象类可不可以放在其他的数据类型中呢?
racke 2006-06-08
  • 打赏
  • 举报
回复
楼主可以试一下,如果表与表之间关系很多,很复杂,是不是手工写sql语句很复杂很容易出错?比如删除category 还要删除下面的所有items如果有继承关系sql就更复杂了。
通过映射,这些关系通过映射表,hibernate 就可以动态生成sql语句。

这只是hibernate 的一个优点,其实更大的好处是有了session 和 sessionfactory这两个缓存。减轻了和数据库通讯的负担,提升了性能。建议楼主看一下<深入浅出hibernate>.
butterwx 2006-06-08
  • 打赏
  • 举报
回复
不行 ...沉下去 了 还得顶起来....
要是 能解开我心中的疑惑 ...再加分 也是可以的....
kill8108 2006-06-07
  • 打赏
  • 举报
回复
我个人的一些想法,用hibernate映射可以认为封装成对象,用其可以少写一些sql语句,开发速度会快点,但若在数据量大的时候,速度并不比jdbc快,因为它会多了一步映身的查找!

望大家继续.....
javalin3012 2006-06-07
  • 打赏
  • 举报
回复
yyjzsl 2006-06-07
  • 打赏
  • 举报
回复
关注学习下

butterwx 2006-06-07
  • 打赏
  • 举报
回复
但是用 sql 语句 快呀.......
只要做好一个 和数据库连接的类,那就可以在整个工程随时调用..怎么开发速度和慢呢...而且减少了很多'对象-关系' 的设置这样如果映射 关系发生改变能够更灵活的修改...
zling1981 2006-06-07
  • 打赏
  • 举报
回复
减少sql语句是一个优点,但不是最重要的,最重要的是实现了对象-关系的映射

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧