spring、structs、habrinate 的文字常识解释

来源:互联网 发布:mac git tower 编辑:程序博客网 时间:2024/06/06 07:24
一. 1 jdbc2_0-stdext.jar 包含JDBC2.0 Optional Package API类。如果我们要使用struts提供的数据资源,就需要将这个文件拷贝到WEB-INF\lib下
2 Struts.jar 包含struts中所有的java类。同样也需要拷贝到WEB-INF\lib下
3 *.tld 标记库描述器文件,描述了多个struts标记库中的自定义标记。同样要拷贝到WEB-INF\lib下
在webapps目录下有如下文件:
1 Struts-blank.war 一个简单的web应用程序
2 Struts-documentation.war 包含struts站点上所有struts文档
3 Struts-example.war Struts很多特性的示范
4 Struts-exercisetaglib.war 主要用于对自定义标签库进行增加而使用的测试页,但也可以示范如何使用struts标记
5 Struts-template.war 包含struts模板标记的介绍和范例
6 Struts-upload.war 一个简单的例子,示范如何使用struts框架上传文件
二. Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。
三. 
首先写了两个实体类Address(private int add_id; 
private String city;private String country;private Company company;)和Company(private int c_id;private String c_name;private Address address;),生成get,set方法,然后配置实体类的映射文件Address.hbm.xml和Company.hbm.xml。 
代码: 
----------Address.hbm.xm 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 

3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > 
<hibernate-mapping> 
<class name="cn.hdu.entity.Address" table="ADDRESS"> 
<id name="add_id" column="ADD_ID"> 
<generator class="sequence"><param 

name="sequence">ADDRESS_SEQUENCES</param></generator> 
</id> 
<property name="city" column="CITY"></property> 
<property name="country" column="COUNTRY"></property> 

<one-to-one name="company" cascade="save-update" 

class="cn.hdu.entity.Company" lazy="false"></one-to-one> 
</class> 
</hibernate-mapping> 

-----------Company.hbm.xml 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 

3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > 
<hibernate-mapping> 
<class name="cn.hdu.entity.Company" table="COMPANY"> 
<id name="c_id" column="C_ID"> 
<generator class="sequence"> 
<param name="sequence">COMPANY_SEQUENCES</param></generator> 
</id> 
<property name="c_name" column="C_NAME"></property> 
<many-to-one name="address" column="ADD_ID" 
class="cn.hdu.entity.Address" unique="true" lazy="false" 
cascade="save-update"></many-to-one> 
</class> 
</hibernate-mapping> 
注意:上面many-to-one,并不是说是多对一,这只是说Company中address属性指向Address中的add_id属性,也就是说一对一指得是一张表中的一个字段对应另外 一张表中的一条记录。 
COMPANY_SEQUENCES和ADDRESS_SEQUENCES代表数据库中两个序列, 需要自己再数据库中create;id代表主键,name=" "严格等于实体类中属性名称 ,column=" "代表数据库中表的字段名,一般规则为大写; lazy="false"表示不延时加载,主要是保证get方法从数据库取值时避免延时发生错误。cascade表示当进行该操作时同时进行habinate一对一的操作。 做完映射之后不要忘记把映射文件写入hibernate.cfg.xml; 
代码: 
<session-factory> 
......... 
<property name="show_sql">true</property> 
<mapping resource="cn/hdu/entity/Company.hbm.xml" /> 
<mapping resource="cn/hdu/entity/Address.hbm.xml" /> 
</session-factory> 

其中show_sql ..true;代表执行时输出sql语句。 

之后去测试,写一个实现类 
public class ServiceImp { 
public void insertCompany(Company company) { 

Session session = HibernateSessionFactory.getSession 

(); 
Transaction tc = session.beginTransaction(); 
session.save(company); 
tc.commit(); 
HibernateSessionFactory.closeSession(); 



测试类: 
public class Test { 
public static void main(String[] args) { 
Service service=new ServiceImp() ; 
Company company = new Company(); 
Address address=new Address(); 
address.setCity("beijin"); 
address.setCountry("zhonguo"); 
company.setC_name("正大"); 
company.setAddress(address); 
service.insertCompany(company); 
System.out.print("OK..."); 

然后看下数据库中两个表,应有插入数据。
转载自网页 http://fqh1987.iteye.com/blog/791827


0 0