1、 如何是按钮在灰亮之间切换? 很简单的一个问题竟被我调试了个把小时才搞定
错误版本1:
<head>
<script language="javascript1.2" type="text/javascript">
function aa(){
var flag = document.getElementById('b').disabled;
if(flag){
document.getElementById('b').disabled=false;
flag = false;
}
if(flag==false)
document.getElementById('b').disabled=true;
}
</script>
</head>
<body>
<input name="a" type="button" value="women" onClick="aa();">
<input id="b" type="button" value="nimen" disabled="disabled">
</body>
——————错误版本2
<script language="javascript1.2" type="text/javascript">
function aa(){
var flag = document.getElementById('b').disabled;
if(document.getElementById('b').disabled){
document.getElementById('b').disabled=false;
}
if(document.getElementById('b').disabled==false){
document.getElementById('b').disabled=true;
}
}
</script>
————正确版
function aa(){
var flag = document.getElementById('b').disabled;
if(document.getElementById('b').disabled){
document.getElementById('b').disabled=false;
}
if(flag==false){
document.getElementById('b').disabled=true;
}
}
————————总结:
发现在上述js当中加入alert语句与不加alert语句会看到不同的效果, 经过分析我认为假如不加入alert的话前后两个方法调用的时间间隔太短了, 因此我们看不到效果的变化。
2、 hibernate 的save与saveOrUpdate方法的比较?
Hibernate配置文件通过unsaved-value来确定对象是否被持久化过。你完全可以通过自己setId的方式来欺骗
Hibernate,让Hibernate认为你new出来的临时对象已经被持久化过。
只不过这样的方式没有太大实际的用途,你也许可以用来写测试。如果你new出来的临时对象是数据库没
有的记录,你让Hibernate去操作该记录,只会造成程序运行异常。
总而言之,最好不要自己管理id,而是让Hibernate管理Id,POJO的setId()方法虽然是public的,但那
不是开放给你用的,只是开放给Hibernate使用的。我一向认为setId是罪恶的。
3、 今天才了解到hibernate中UserType这中东东, 正在学习中.....稍后呈上学习笔记....
4、 如何在myEclipse下导入jar包相应的源文件?
选择你的项目右键Properties--》java build path --》选择xxx.jar
点击jar文件前面的小三角符号--》Source Attacment--》Edit--》External File --》选择刚才下载的xxx.jar包对应的源文件即可
5、 hibernate拾遗
在Hibernate中,最核心的概念就是对PO的状态管理。一个PO有三种状态:
a、未被持久化的VO
此时就是一个内存对象VO,由JVM管理生命周期
b、已被持久化的PO,并且在Session生命周期内
此时映射数据库数据,由数据库管理生命周期
c、曾被持久化过,但现在和Session已经detached了,以VO的身份在运行
这种和Session已经detached的PO还能够进入另一个Session,继续进行PO状态管理,此时它就成为PO的
第二种状态了。这种PO实际上是跨了Session进行了状态维护的。
只要PO的状态是第二种或者第三种,Hibernate都可以成功进行delete和update操作,如果是
第一种,那么Hibernate就认为,还没有资格调用上面两种操作。
6、 一个对象是否被持久化过,应该取决于这个对象是否是从数据库查询出来的。这个是显而易见的。今天
在做项目的时候发现这样一个问题:例如有一个类Parent,其主键是id,还有name等字段,另一个类
Child于Parent构成父子关系。我现在希望通过级联删除将某一个父亲和它的儿子都删除了,按照
Hibernate手册上的做法:
Java代码
Parent p = (Parent); session.load(Parent.class, pid);;
session.delete(p);;
这个非常容易理解,将父亲从数据库中读出来,那么这个对象显然已经被持久化了。再删除时,如果配
置文件都正确,会进行级联删除。
如果现在我已经有了parent的主键pid,直接去构造一个和数据库查出来的parent类一摸一样的对象p:
Java代码
Parent p = new Parent();;
p.setId(pid);;
p.setName(name);;
......
Parent p = new Parent();;
p.setId(pid);;
p.setName(name);;
......
并用上面的一段代码来代替:
Java代码
Parent p = (Parent); session.load(Parent.class, pid);;
Parent p = (Parent); session.load(Parent.class, pid);;
同样执行删除操作,Hibernate会报错,并且告诉我有外键的约束。
我不明白的是:对于delete操作,Hibernate到底是如何判别这个Parent对象是否是被持久化过的呢?我
直接构造一个和数据库中查出来一样的对象,从外观上看似乎是一致的,但是我也知道,从本质上讲,
一定不一样。只是对于Hibernate来说,它到底是如何分辨出这两种不同的对象的呢?
——————另外发现:
手动把所有的child都建出来, 这样就能删除了.
Parent p = new Parent();
p.setId(pid);
Child c = new Child();
c.setId(cid);
p.addChild(c);
session.delete(p);
经过试验,这种方法是可行的
7、 偶们经常会遇到一些用户需求, 需要实现一个区间类型的东东:
public class Entity {
private Date startDate;
private Date endDate;
private ......;
}
如项目的开始/结束时间, 人员的任职期间等等
但是如要比较这个对象和其他对象区间的关系, 就得写一些恶心的code:
if(this.startDate > that.startDate && this.endDate < that.endDate)
if(this.startDate < that.startDate) ......
一堆的if else了.
或许你会觉得这些小东西这样写就可以了, 但是为了有一个更完美, 更好用的Domain Object, 是值得偶
们在这些小细节上操劳的.
有一些现成的lib就是做这些东西的, 比如:
http://timeandmoney.sourceforge.net/
http://joda-time.sourceforge.net/