??xml version="1.0" encoding="utf-8" standalone="yes"?>
现在具体来说明下Q?br />步骤Q?br />1 新徏设一个j2ee的web project
2 dhibernate包,user libraries不?白色框里2个都?单选框选下面一个?br /> 2.1需要配|个数据q接 操作Qnew的下一步,复选框的沟L-》下一部门-?br /> 2.2建立一个存放sessionFoctory工厂的包?org.hibernate--》完?br />
3 q时候hibernate.cfg.xml产生 q生了一个HibernateSessionFactory的session的工厂类
4 需要给hibernate.cfg.xml里写数据库的q接Q下面以sql数据库的q接来讲解:
4.1 在hibernate.cfg.xml的设计器里点Qnew
4.2 .Profile name:随便?只要不重?br />4.3如果没有你需要的Driver p己新Z?点超U连接configure那个
4.4在下拉框里选你要连的数据库。如q你选sql server
4.5在url里?填jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs
4.6倒入sqlserverqjava?个jar?点add jars选择你要的jars?点确?br />4.7?name和pwd下一部—?gt;完成
x数据库 hibernate.cfg.xml已经配置完毕?br />
5下面需要把数据表?转成 c?br />讲解
1切换到数据库的模式下Q选到你要转成cȝ表!
2右键Q倒数W?个?br />3选择一个包。一般我们v的名字叫bean
4W一个复选框 是说是否产生q个cȝhbm.xml文g
5W?个复选框是?需要生一个抽象的 cM
6 我们选择一个包Q把?个复选的点上 ok了下一?br />7l我们的主键 选择适合的增长方式!一般选native如果是外键就是foreign--->完成
6--另外一个类 雷同 我就不讲了只是 增长方?用foreign表示 表示Ҏ别的表来讄自己
下面讲怎么?个表的一对一关系 搞出来!
增长一个h的时?׃增长一个证 Q 所以证 应该成ؓ ?cȝ一个属性,同时我们l他get,set Ҏ
而且证里 id是通过人里id在设|的Q所?证里 也应?包含?q个cȝ对象作ؓ属性!用老师的话?br />是你中有我Q我中有你!testTablec?相当与h carcȝ当与证 ?br />alt+shift+s可以倒到属性的get 和setҎ
7配置他们各自?**.hbm.xml文g
作ؓ主表?人类QtextTableQ中 应该加如下代码:Q代码应写在<class></class>里)
<one-to-one name="car" class="org.bean.Car" cascade="all"></one-to-one>
解释一下:one-to-one表示现在2个表的关pL一对一 name里的car是 textTable 里一个属?的对象名
q个对象是 我要兌那个表的cȝ对象名! cascade=''all" 表示现在q个表是d?br />
作ؓ从表?证类QCarQ中加入如下代码Q?br /><one-to-one name="testTable" class="org.bean.TestTable"></one-to-one>
补充说明下:虽然q个cd q个xml在一个文件夹里,但是q不表示一个包里,所以我们写class的值的时候要写全U的路径?br />重点:因ؓ q个表是从表Q他的id要跟随的主表的变化而变?所?因该在id里加 如:
<param name="property">testTable</param>
解释Qname="property"表示引用的是属性 ?testTable表示引用的?q个值就是另一个类 Q他现在作ؓ一个属性放在了当前c里。这P我们把主表的主键和从表的主键关联v来了Qƈ且从表的主键引用主表的主键当自己的外键?br />
8以上完成?2个表的连接,关系操作Q了 下面 我们pq行一个插入操?Q看我们插入一个h的时候,是否也能插入一个证Q?br />
9新徏设servlet其中 注意他在web-xml中是如何配置的!到时候jsp里访问就Ҏ了!
新徏2个表的类的对象! l其中不是相关的属?通过setҎ l倹{?
如:Car car=new Car();
TestTable testTable=new TestTable();
testTable.setUsername("wudi");
testTable.setCar(car);
car.setTestTable(testTable);
car.setCarMoney(new Integer(123));
需要调?主表?daocM的saveҎ q行插入 同时把主表的对象 作ؓ参数传过?br />
9建立一个存放Dao的包dao 和一个我们要在TestTableq个表上q行一pd操作的类 TestTableDao
public void save(TestTable table)
{
Session session=HibernateSessionFactory.getSession();
Transaction tx=session.beginTransaction();
session.save(table);
tx.commit();
}
说明 先生hibernateSessionFactory工厂子类的对象!然后 用他产生事物的对象!
在用他调用save ()Ҏ 其实q就是hql语言 是insertҎQ最后提交事?br />
struts-config 里配|的一点个人心?/p>
在jsp里一般都是表?提交 Q或?q接 都是 ?**.do来蟩?/p>
最开始去的是 actionselvlet
在这里面配置一些信息把 估计 HttpServletRequest,HttpServletResponse是在q时候生了对象
然后马上产生actionMapping的实例(所有蟩转,表单的发?都会去这个类里的 CQ这是个程Q?/p>
然后会调用RequestProcessorc?里面的processPreprocessҎQ好象就是v转发request,response的作用)
通常我们也可以重也这个类 然后重写processPreprocessQ) Ҏ具体如下
自己重写的话 必须?lt;/struts-config> 里加
<controller processorClass="包名.l承RequestProcessor的类?>
</controller>
作用是在把数据提交到action?先可以对一些数据进行验证下Q可以说 q个cd以当整体功能?
而action?Ҏ个模块的
如返回false 不在进行以下操作了?/p>
如果q回true;
׃?<action-mappings>里找 ?***.do 前面***对应的名U相同的 path?
<form-bean>?type是formbean的绝对地址Qname可以看成q个地址的简化, 当做一个映?/p>
<action-mappings>?type?action的绝对地址 Qpath是这个地址 的简化,可以看成在文仉的一个映?br />
{
·如果我们q时候想?提交的表单和formbean兌h
p?lt;form-bean>里name攑֜ <action>里, 在aciton里也?name q时?formbean 和 action 产生了关pM
接着formbean的对象?提交的表单里的数据?如果property属性对应的值在forbean里属性有
对应的就?立刻调用里面的setҎ
最?把的 4个action需要参数对?传到action?/p>
· 如果我们想通过参数 来执行不同的Ҏ 可以q么做:
?lt;form-bean>里的<action >加 ?parameter="参数? q时候蟩转到的action我们可以让他 l承?br /> org.apache.struts.actions.DispatchAction; DispatchActionc?/p>
我们不用在写executeҎ?
我们写的Ҏ名字 和参数的名对应的g样就可以了,后面Ҏ的参数和executeҎ的一?br /> Ҏ的用法也和execute一_如此Ҏ可以写多?br /> q样的好处是 我们在承自DispatchAction的action里不需要做更多的判?只看是哪个页面过来的
p用与q个面传递参数相同的Ҏ?br />
}
{
如果我们不想和formbean兌h Q可以用如下方式Q?br /> 1跌{?jsp面
<action forward="/要去的地址" path="/是?**.do?**" />
解释Qpath?表单和蟩转的***兌Qforward是要去的地方?br /> 2跌{?action
<action path="/是?**.do?**" type="包名.***Action">
3跌{
<action parameter="/AddBook.jsp" path="/addbook1" type="org.apache.struts.actions.ForwardAction" />
分析Qpath 在是jsp面 发过来的 ***.do里面的?AddBook.jsp可以看成参数 但是理解上是ForwardAction
利用q个参数 军_ 跌{到哪个页?br />
q?个蟩?包括表单的提交?都是会先l过RequestProcessorQ)的,手写l承RequestProcessorQ)的也是一L
}