趁今天休息,把昨天不会的知识总结一下,这几天小汤给我们带项目,给大家的感觉就是老师水平很高,我们还得苦修几年才行啊,小汤经验挺丰富的,以至于我们
遇到问题时,他一问这个对象可以有吗?下面万籁无声时,小汤一般就说“这个可以有”,好了,还是总结知识点吧:
1.HIbernate创建查询,首先拿到session,再
List list = session .createQuery(//
" FROM Department d WHERE d.parentId = ?")//
.setParameter(0,值)//
.list();
之后测试,一般对于CRUD操作,都要单元测试。
注意:
用//格式固定格式,Hibernate源码就是这样固定格式的
2.用到的标签(不熟练的)举例:
<html:link
action="/dept?method=editUI&id=${department.id}">修改<
/html:link>
<html:link
action="/dept?method=del&id=${department.id}&parentId=${parent.id}"
onclick="return window.confirm('您确定要删除这条记录吗?')">删除</html:link>
3.外键可以为空
4.游离:数据库中有,但没有和session关联,Hibernate根据id判定是否是游离状态,如果你id有值 ,则不是游离。
我在网上查了一下什么是游离对象?
游离对象的特征。游离对象具有以下特征:
(1) 不再位于Session的缓存中,也可以说,游离对象不被Session关联。
(2) 游离对象是由持久化对象转变过来的,因此在数据库中可能还存在与它对应的记录(前提条件是没有其他程序删除了这条记录)。
游离对象与临时对象的相同之处在于,两者都不被Session关联,因此Hibernate不会保证它们的属性变化与数据库保持同步。游离对象与临时对象
的区别在于:前者是由持久化对象转变过来的,因此可能在数据库中还存在对应的记录,而后者在数据库中没有对应的记录。
Session的以下方法使持久化对象转变为游离对象:
(1)
当调用Session的close()方法时,Session的缓存被清空,缓存中的所有持久化对象都变为游离对象。如果在应用程序中没有引用变量引用这
些游离对象,它们就会结束生命周期。
(2)Session的evict()方法能够从缓存中删除一个持久化对象,使它变为游离状态。当Session的缓存中保存了大量的持久化对象,会消耗
许多内存空间,为了提高性能,可以考虑调用evict()方法,从缓存中删除一些持久化对象。但是多数情况下不推荐使用evict()方法,而应该通过查
询语言,或者显式的导航来控制对象图的深度。
感觉这段话说的挺好的,就copy下来
5.注册时间转换器
转换器为便于在项目中易于维护,放在一个Servlet中,然后将Servlet配置在web.xml中
时间转换器:
Java代码
package cn.itcast;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.beanutils.Converter;
public class UtilDateConverter implements Converter {
private static SimpleDateFormat format = new
SimpleDateFormat("yyyy-MM-dd");
public Object convert(Class type, Object value) {
if (value == null) {
return value;
}
if (value instanceof Date) {
return value;
}
if (value instanceof String) {
try {
return format.parse((String) value);
} catch (ParseException ignore) {
}
}
return null;
}
}
Servlet类:
Java代码
package cn.itcast;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import org.apache.commons.beanutils.ConvertUtils;
public class InitConvert extends HttpServlet {
@Override
public void init() throws ServletException {
//注册转换器
ConvertUtils.register(new UtilDateConverter(), Date.class);
}
}
web.xml配置:
<servlet>
<servlet-name>InitConvert </servlet-name>
<servlet-class>cn.itacst.InitConvert </servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
6. ActionForward 动态传参问题:
ActionForward af = mapping.findForward(“toList”);
return new ActionForward(af.getPath+"&parentId="+af,af.getRedirect);
好了,今天就写到此吧,明天还要上课,睡了!
posted on 2010-02-07 00:25
d66380022 阅读(164)
评论(0) 编辑 收藏