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

butterwx 2006-06-07 10:18:53
我原来 是作 c/s 结构的程序开发 现在学习 b/s 结构程序开发但是学习中hibernate产生一点疑问,为什么在连接和使用数据库时,不直接连接数据库和不直接使用使用sql 语句,而是要进行数据映射呢?这样如果对某一个对象增加一个属性的时候和需要改变映射关系的时候,需要修改地方就太多了,并没有直接连接数据库和直接使用使用sql 语句那样方便.....hibernate 的优点到底是什么呢?
希望各位朋友解决我心中的疑惑...谢谢
...全文
427 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语句是一个优点,但不是最重要的,最重要的是实现了对象-关系的映射

系统设计
1 jive设计思路
2 jive的工作内幕
3 Jive源代码研究
4 Jive的设计模式
5 jive学习笔记



设计模式
1 大道至简-Java之23种模式一点就通
2 设计模式宝典




数据库设计
1 Jive Forums数据库说明(英文)
2 Jive KB数据库说明(英文)
3 Jive Forums KB数据库说明(文)
4 Jive Forums KB合并数据库脚本(MSSQL)
5 Jive Forums KB合并数据库脚本(Oracle)
6 Jive Forums KB合并数据库脚本(MySql)
7 使用XML封装数据库操作语句的实现
8 Database Package下面的暗黑世界
9 Jive树形结构视图(Treewalker)
10 有时候threadID并不是连续的
11 jsp连接数据库大全
12 OOD需要数据库设计吗?
13 JDBC性能优化技巧



权限设计
1 权限系统概要
2 关于权限设计方面的问题
3 关于用户角色权限管理一点想法
4 关于权限系统的设计



缓存系统
1 剖析Jive的缓存机制
2 jcs学习笔记
3 关于Hibernate的Cache问题
4 用缓冲技术提高JSP应用的性能和稳定性
5 SwarmCache入门



源代码研究
1 Jive的全局配置
2 Jive源代码情景分析-index.jsp
3 Jive源代码情景分析-forum.jsp
4 Jive源代码情景分析-过滤器篇
5 jive每日一步-web.xml
6 全面了解Jive的ID机制
7 tree树形数据结构



扩展功能
1 为jive3.x写ColorFilter
2 Jive的分页处理
3 JiveJdom使用剖析
4 丰富的图释
5 使用正则表达式让你的jive显示图片
6 Jive3增加帖子的点击功能的高效方法



国际化支持
1 jive_forums_i18n_zh_CN_ori.properties
2 jive_forums_i18n_zh_CN.properties
3 资源汉化方法
4 Jive的文问题及解决办法
5 Java程序的国际化和本地化介绍
6 Java的i18n问题
7 Java国际化——资源包的使用
8 国际化
9 Supported Encodings
10 native2ascii - Native-to-ASCII Converter
11 Jive 3.x UTF-8文附件问题
12 JF3.1.3 JKB1.0.2 文化
13 Jive3.0.8 MYSQL的文解决方案
14 jive_kb_i18n_zh_CN_ori.properties



全文搜索
1 使您的Jive搜索支持
2 关于Jive2文搜索
3 基于JAVA的全文索引引擎Lucene简介



安全认证
1 Jive2.1.1 License保护原理分析
2 用Java的加密机制来保护你的数据
3 在java编程实现数字签名系统
4 关于Jive1的验证和相关类的调用

5 MD5的加密算法(JavaScript)



产品介绍
1 Jive简介

Jive Forums
1 Jive Forums特性
2 Jive Forums Changelog

Jive KB
1 Jive Knowledge Base特性
2 Jive Knowledge Base Changelog



系统缺陷
1 Jive的硬伤
2 查询的Bug



安装配置
1 Jive Forum KB的license
2 MakeWAR.jar文件的MakeWAR.class源代码MakeWAR.java
3 为Jive写的补丁程序patcher.jar的源程序
4 WebLogic文问题配置文件
5 JSP系统信息配置探针



反编译与混淆
1 編譯、反編譯、反反編譯

反编译
1 反编译常用工具

混淆
1 Sun公司的混淆器JADE
2 RetroGuard的使用方法

JVM
1 JVM之class文件结构
2 JVM 內的資料處理



MVC Framework
1 应用Struts的网站建设



Java基础
1 20个Java基础Tips
2 abstract,static,final修饰符
3 ChinaUnix.net Java精华贴
4 ANT学习笔记
5 极度性能调整


FAQs
1 关于ConnectionManager的代码
2 关于FORUMFactory的几个疑问
3 研究哪个版本的jive最合适

67,549

社区成员

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

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