hibernate 映射文件 一些疑问
1,hibernate的映射文件是一定要有的吗?比如我现在有一张表test,有对应映射类Test和映射文件,然后再有一张临时表test_temp,我在清空test_tem...
1,hibernate的映射文件是一定要有的吗?
比如我现在有一张表 test,有对应映射类Test 和映射文件 ,然后再有一张临时表 test_temp,我在清空test_temp时,也要有对应的映射类和映射文件吗?
2,像上面这种情况一般怎么应对?
3,Spring+Hibernate,用Spring管理事务时,用HibernateTemplate执行原生态Sql语句时,还需要手动关session吗?我只知道执行hql时不用关。
补充:
我现在只有Test.java,Test_table,Test.hbm.xml
对于操作Test,我是完全明白的。我不明白的地方是,如果现在我想操作Test_temp_table的话,如delete from Test_temp_table,临时表字段属性完全一样,这时候我是一定一定要去再建一个TestTemp类,和TestTemp.hbm.xml,才能操作这张表吗?前提是用HibernateTemplate去完成增删改查。
目前三条回答还是不太满意,提高50分,希望有更好的回答。 展开
比如我现在有一张表 test,有对应映射类Test 和映射文件 ,然后再有一张临时表 test_temp,我在清空test_temp时,也要有对应的映射类和映射文件吗?
2,像上面这种情况一般怎么应对?
3,Spring+Hibernate,用Spring管理事务时,用HibernateTemplate执行原生态Sql语句时,还需要手动关session吗?我只知道执行hql时不用关。
补充:
我现在只有Test.java,Test_table,Test.hbm.xml
对于操作Test,我是完全明白的。我不明白的地方是,如果现在我想操作Test_temp_table的话,如delete from Test_temp_table,临时表字段属性完全一样,这时候我是一定一定要去再建一个TestTemp类,和TestTemp.hbm.xml,才能操作这张表吗?前提是用HibernateTemplate去完成增删改查。
目前三条回答还是不太满意,提高50分,希望有更好的回答。 展开
5个回答
2015-01-22
展开全部
首先第一个问题,如果是临时表的话就没必要有对应的类和映射文件,添加对应的类目的是你要通过这个类管理你的数据库的表,而映射文件是告诉程序你的这个类和数据库哪张表对应的。。如果是临时表并且你不需要使用程序管理的话就没必要,如果你要使用程序管理就必须要有对应的类和mapping---临时表后期不需要的话可以不在管理这个映射文件就可以了,也就是说只要把读取该mapping的操作去掉就可以。
使用原生态的sql也不需要手动的关闭的,都是由spring帮您完成的。。
具体原理有点多,如果您想深究的话可以在网上搜索一些这方面的资料
楼下的回答不怎么准确,hibernate是支持原生sql,但是如果使用hibernate提供的原生sql而不是jdbc的话也是需要映射文件的(mapping)
就是说只要您使用hibernate管理表就必须有mapping和实体domain 不管是hql还是sql都要。。使用jdbc就不需要了
使用原生态的sql也不需要手动的关闭的,都是由spring帮您完成的。。
具体原理有点多,如果您想深究的话可以在网上搜索一些这方面的资料
楼下的回答不怎么准确,hibernate是支持原生sql,但是如果使用hibernate提供的原生sql而不是jdbc的话也是需要映射文件的(mapping)
就是说只要您使用hibernate管理表就必须有mapping和实体domain 不管是hql还是sql都要。。使用jdbc就不需要了
展开全部
映射文件是把数据库的表对应成java中的类,这样在java代码中或者hql中你只需要操作类的对象,就可以对数据库表中的一行数据的每个字段进行操作。
想象一下,例如:
一张表,users有两个字段,id和name
java中有个Users类,也有两个成员变量,id和name
例如有个Users的对象,Users u = new Users("001","张三");
用hibernate插入这个对象到库里,只需要sava(u)就可以了。
在这背后hibernate会根据你的映射问价,把u这个对象,对应到相应的表,和一个个属性,然后存储。
如果你需要用对象来对数据库的表进行增删改查,那么相关的表和类必须有映射文件。
如果只用原生sql那么就没有必要写映射文件。
hibernate是支持原生sql的,session是有Spring管理的那么就不用关,如果是你自己通过jdbc获取事物,那么该关的还得关
想象一下,例如:
一张表,users有两个字段,id和name
java中有个Users类,也有两个成员变量,id和name
例如有个Users的对象,Users u = new Users("001","张三");
用hibernate插入这个对象到库里,只需要sava(u)就可以了。
在这背后hibernate会根据你的映射问价,把u这个对象,对应到相应的表,和一个个属性,然后存储。
如果你需要用对象来对数据库的表进行增删改查,那么相关的表和类必须有映射文件。
如果只用原生sql那么就没有必要写映射文件。
hibernate是支持原生sql的,session是有Spring管理的那么就不用关,如果是你自己通过jdbc获取事物,那么该关的还得关
追问
有补充,请再看看上面补充
追答
是的,要不java不会知道你操作的是那张表
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你要用hql语句去查询。那就一定要建类。不要hbm
如果用sql语句。那么类和.hbm.xml都不要。
如果用sql语句。那么类和.hbm.xml都不要。
追问
如果补充中所述,我整体是使用hql的,只是现在有了一张临时表需要操作,这样的情况下,用HibernateTemplate创建session ,然后session.createQuery(sql),去执行原生态的sql语句,这样的情况下需要这张临时表对应的实体类和映射文件吗?
追答
不需要
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
hibernate 可以用注解实现.配置文件不是必须的,但是与数据库的映射关系是必须的
如果使用 hibernate语句不能直接使用表名, 如果使用sql 则无所谓
如果使用 hibernate语句不能直接使用表名, 如果使用sql 则无所谓
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一定要有
执行SQL语句要看你怎么写的
执行SQL语句要看你怎么写的
追问
如果补充中所述,我整体是使用hql的,只是现在有了一张临时表需要操作,这样的情况下,用HibernateTemplate创建session ,然后session.createQuery(sql),去执行原生态的sql语句,这样的情况下需要这张临时表对应的实体类和映射文件吗?
追答
不需要
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询