java ee/ssh。hibernate连接sqlserver2008的问题,谢谢!

eclipse中测试,通过hibernate连接数据库。然后存入和读出几个对象都很正常。但是在数据库的管理工具(sqlserver2008)那里技术刷新和重新启动软件也没... eclipse中测试,通过hibernate连接数据库。然后存入和读出几个对象都很正常。
但是在数据库的管理工具(sqlserver2008)那里技术刷新和重新启动软件也没有看到插入的元组。
问题:
1、那么存储的数据存到了哪里呢?如何在sqlserver2008中看到?
2、sqlserver有没有类似的命令行工具,比如在cmd中敲上“select * from student”就能在cmd中显示student表的数据?看别人用的mysql倒是有。

问题1的存取代码、配置、问题表现,详情如图:
展开
 我来答
yugi111
2014-02-06 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部
flush()和缓存相关。执行时会清除session缓存并向数据库发送SQL语句并执行,但此时如果数据库当前存在一个事务,数据库会先将这些SQL语句缓存起来,那么此时在数据库中是无法看到SQL语句执行结果的。除非执行commit提交了事务。只要没有执行commit()方法,就能通过rollback()方法进行回滚。
1、session在什么情况下清理缓存:
* 默认情况下,当应用程序提交事务,如:Transaction.commit;
* 当我们显示调用flush的时候
* 在执行某些查询的时候,如:iterate
2、session.flush()主要完成两件事情:
* 清理缓存
* 执行sql
3、flush执行的顺序:hibernate按照save,update,delete顺序提交相关操作
commit()和事务相关。执行时会先隐式调用flush()方法,再提交事务。执行之后无法rollback()进行回滚。
 
public void testSave1() {
                Session session = null;
                Transaction tx = null;
                try {
                        session = HibernateUtils.getSession();
                        tx = session.beginTransaction();
                        User1 user = new User1();
                        user.setName("李四");
                        user.setPassword("123");
                        user.setCreateTime(new Date());
                        user.setExpireTime(new Date());

                        // 因为user的主键生成策略采用的是uuid,所以调用完成save后,只是将user纳入到了session的管理
                        // 不会发出insert语句,但是id已经生成,session中existsInDatebase状态为false
                        session.save(user);

                        // 调用flush,hibernate会清理缓存,执行sql
                        // 如果数据库的隔离级别设置为未提交读,那么我们可以看到flush过的数据
                        // 并且session中existsInDatebase状态为true
                        session.flush();

                        // 提交事务
                        // 默认情况下commit操作会先执行flush清理缓存,所以不用显示的调用flush
                        // commit后数据是无法回滚的
                        tx.commit();
                } catch (Exception e) {
                        e.printStackTrace();
                        tx.rollback();
                } finally {
                        HibernateUtils.closeSession(session);
                }
        }

        public void testSave2() {
                Session session = null;
                Transaction tx = null;
                try {
                        session = HibernateUtils.getSession();
                        tx = session.beginTransaction();
                        User2 user = new User2();
                        user.setName("张三1");
                        user.setPassword("123");
                        user.setCreateTime(new Date());
                        user.setExpireTime(new Date());

                        // 因为user的主键生成策略为native,所以调用session.save后,将执行insert语句,返回有数据库生成的id
                        // 纳入了session的管理,修改了session中existsInDatebase状态为true
                        // 如果数据库的隔离级别设置为未提交读,那么我们可以看到save过的数据
                        session.save(user);

                        tx.commit();
                } catch (Exception e) {
                        e.printStackTrace();
                        tx.rollback();
                } finally {
                        HibernateUtils.closeSession(session);
                }
        }
匿名用户
2014-02-10
展开全部

原因:从您的描述来看,肯定是插入到数据库了,而且也是一张student数据表。但是与sqlserver中所看到的那张表并不是一张表。原因就是没有指定目标数据库(hibernate.cfg.xml中可以看出)

解决:修改hibernate.cfg.xml,加上databasename即可。

 <property name="connection.url">
        jdbc:sqlserver://localhost:1433;databasename=你的数据库的名字
</property>
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友de74bac
2014-02-06 · TA获得超过200个赞
知道小有建树答主
回答量:136
采纳率:0%
帮助的人:138万
展开全部
不好判断原因,猜测你写入的数据库和你用工具查看的数据库不是同一个。
如不是这个错误,贴一下hbm文件,如果是注解方式的,贴po文件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式