对象被持久以后……
来源:互联网 发布:二分搜索递归算法 编辑:程序博客网 时间:2024/05/17 09:30
今天上午突然想到了一个问题:怎样在对象被执久化后,获取他的主键(标识列)呢?
按以前的JDBC惯例,应是采用数据库查询时的倒序来获取最后一个标识列的值。
但思索一下,如果同时有几个用户在进行插入,不就很易出错啦!
所以我不能采用这个方式来处理,那方法只有两种。
A、在数据库里加一字段,来充当主键。在插入数据时先定义好主键,这样我就知道主键的值啦。
B、在hibernate中录求解决方法。
既然现在用的就是hibernate,那我们肯定要采用B方案,A方案为预备方案。
在网上找了一会,没有发现好的方法。
眼看就快无解啦!再怎么着我也不能选用A方案啊!那就失去了用hibernate的意义啊!
不干心,突然我想到了一个网友。这哥们,技术好,还很仗义,之前受他指点进步很大……
不敢再浪费时间,于时Q他。
从他的观点中,我得知。
hibernate在持久化对象后,会将传进来的对象补全。
如:
Bean bn=new Bean();
BeanDAO bd=new BeanDAO();
db.save(bn);
当我们再调bn的方法就能查寻到数据库里bn对象的所有信息,当相我们如要想调用这个持久化后的产物。
在传参处就可以拿得到,需要注意的是先要进进持久化(就是调save方法)。大家可能会有疑问,这里说
明下,被持久化后这个对象就会读到数据库里的信息。又因为对象是引用类型的,所以我们在未持久化时
传进来的是未持久化对象的引用,持久化后将数据填入的是同一个对象。
最近在弄MS的东东,这块有点生啦!
顺便带一笔,在MS往方法里传值时。如果传对引用类型的话,要在参数前加一个ref或out.
Bean bb=new Bean();
show(ref bb);
Console.WriteLine(bb.Name); ---如果不用ref传参的话,此处会抛空指针异常。
public void show(ref Bean bn)
{
bn.Name="gg";
Console.WriteLine(bn.Name);
}
大概方式如以上代码,当然你可能觉得ref和out是重复的。
这个你别着急MS不会做这么笨的事,他们是有差别的。
详情可以上msdn了解。需要注意的是,如果不用ref或out
进行传参时的定义,VS会报异常(红色部分).
- 对象被持久以后……
- 跳槽计划被泄密以后……
- 多年以后……
- Hibernate拉出的持久对象放入新集合中被修改,持久对象也变了
- 24小时以后……
- 送给以后的自己…
- 对象持久化
- 对象持久化操作
- 对象持久化
- 操纵持久化对象
- 操纵持久化对象
- delphi对象持久化
- Hibernate持久化对象
- 操纵持久化对象
- 持久化Lua对象
- hibernate 持久化对象
- 持久化对象生命周期
- 对象持久化
- static和volatile的用法
- ubuntu安装man手册页
- XMLHttpRequest类
- Response.Redirect(),Server.Transfer(),Server.Execute()的区别
- 二十天一学通C#:.NET中文件和文件夹的类
- 对象被持久以后……
- [记录]使用sscanf_s遇到的问题
- 实施敏捷过程中,战胜变化中阻力的6步模型
- 引用System.web和不引用两种方法实现字符串转变为UrlEncode 用于提交POST
- 利用DirectSound实现声卡录音【老毕改版】【Part1】
- SetTimer 方法
- 敏捷软件开发和精益看板管理
- 用ATL开发和部署ActiveX网页控件
- 异地分布式敏捷软件开发 (Distributed Agile Software Development)