- 浏览: 37528 次
- 性别:
- 来自: 大连
最新评论
文章列表
org.hibernate.HibernateException: No CurrentSessionContext configured!
必须设定session的上下文!
hibernate.cfg.xml加上:
<property name="current_session_context_class">thread</property>
junit.framework.AssertionFailedError: No tests found in cn.keith.hibernateIdTest.Test at junit.framework.Assert.fail(Assert.java:47) at junit.framework.TestSuite$1.runTest(TestSuite.java:97) at junit.framework.TestCase.runBare(TestCase.java:134) at junit.framework.TestResult$1.protect(TestResult.java ...
一对一的关系:就是一个对象对应着另一个对象,你中有我,我中有你的关系;
例如:用户和身份证一样;
user.xml:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping> ...
Query用处查询:代码:
package cn.keith.hibernate;
import java.util.Iterator;
import java.util.List;
import junit.framework.TestCase;
import org.hibernate.Query;
import org.hibernate.Session;
import cn.keith.hibernate.hibernateUtil.HibernateUtils;
public class StudentQueryTest extends TestCa ...
hibernate的生命周期分3个状态(详细在前面文章里):
Transeint(瞬时) * 没有被session管理 * 在数据库中没有与之匹配的记录 Persistent(持久) * 纳入session管理 * 在数据库中有与之匹配的记录 * 当属性发生改变,在清理缓存时(脏数据检查)会自动和数据库同步 Detached(离开) * 没有被session管理 * 在数据库中存在与之匹配的记录
get和load方法的差别? * get不支持lazy,load在默认情况下支持lazy * get加载数据,如果不存在返回null,而load返回ObjectNotFoundException异 ...
跟上一个项目测试类:
public void getTest() {
Session session = null;
try {
session = HibernateUtils.getSession();
session.beginTransaction();
// get加载上来的对象为持久对象(数据库里的对象,不是session里的 )
// 执行get会马上发出查询语句
Student student = (Student) session.get(Student.class,
"297e556a27a ...
当new一个对象时,这个对象就是瞬时对象,此时它们没有跟任何数据库表项关联;
瞬时对象(Transient Object):
使用new操作符初始化的对象不是立刻就持久的,首先是瞬时的,也就是说他们没有任何跟数据库表相关联的行为,只要应用不再引用这些对象(不再被任何其他对象所引用),它们的状态就会丢失,并由垃圾回收机制回收;
当一个瞬时对象被save(),update()时,这个对象的状态就变成持久化对象!
持久化对象(Persist Objects):
持久化实例是任何具有数据库标识的实例,它有持久化管理器session统一管理,持久实例是在事务中进行操作;它们的状态在事务结束 ...
续上一篇:
编写一个客户端类(client):
package cn.keith.hibernate.model;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class Client {
public static void main(String[] args) {
// 读取hibernate.cfg.xml文件
Configuration cfg = new Config ...
虽然hibernate3.2版本已经很旧了,但是为了适应某些场合的应用和了解下hibernate,来学习一下3.2版本!
1:添加hibernate的jar文件:
hibernate根目录下面的:hibernate3.jar;
hibernate/lib下面的全部jar文件;
2:手动copy,hibernate.cfg.xml:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
...
struts2 OGNL
- 博客分类:
- struts2
<li>访问值栈中的action的普通属性: username = <s:property value="username"/> </li>
<li>访问值栈中对象的普通属性(get set方法):<s:property value="user.age"/> | <s:property value="user['age']"/> | <s:property value="user[\"age\"]"/> ...
struts2的result的type有很多,但是一些都不大常用!
dispatcher,redirect,chain,redirectAction!
dispatcher是默认的,运用服务器跳转(jsp:forward)到结果页面;不能跳转到一个action里;
redirect:跳转到视图,不能跳转到一个action里;
chain:forward到一个action!
redirectAction:客户端跳转!
struts.xml:
<struts>
<constant name="struts.devMode" value=&quo ...
wildcard:通配符,它的作用就是减少冗余的的代码,给人视觉的简介,可维护性好.....但是使用wildcard前提就是一个好的项目约定规范!至于如何制作项目约定规范,慢慢的项目积累!
通配符项目:从jsp开始看:
<a href="<%=context %>/user/User_add">增加学生</a>
<a href="<%=context %>/user/User_del">刪除学生</a>
<a h ...
struts2的请求会先找到<package>在根据<action>找到相应的Action.class!然后根据<result></result>返回的页面!有时要指定相应的方法,这时会用到DMI!
看下action.class:
package cn.keith.action;
import com.opensymphony.xwork2.ActionSupport;
public class NameSpaceTest extends ActionSupport {
public String nameSpace() { ...
当发送一个请求到另一个页面的时候!如果你想返回到首页的话!会出现404问题(指的是jsp)!
2个原因:
1:如果你直接是
<a href="index.jsp"></a>
容器会是你请求万的一个连接基础之上再加个index.jsp!如:
http://localhost:8080/struts2XXX/XXX.action/index.jsp
这样容器当然找不到!
2:有的人会以为给个觉得路径就能解决问题:
<a href="/index.jsp"></a>
然 ...
struts2执行会先根据web.xml的配置,找到struts.xml!在struts.xml里根据请求的地址找到相应的package里action然后根据<result>做出反应!
<package>里:nameSpace和name!
你发送的请求可以是:packageName/actionName!
也可以是<package>的nameSpaceName/actionName!
但是当你发送请求时 可以不写<package>的name,如果要有spaceName的话就必须得加上spaceName,要不就会找到默认package为&qu ...