admin 管理员组

文章数量: 1184232


2024年3月12日发(作者:特斯拉事件推动edr国标化)

Science&Technology Vision 

2012年o4月第11期 

科技视界 IT论坛 

WareByPromotionEvenflD(ID)这个方法.对数据库进行操作, 

并得到了wareListo 

E如果此操作层方法没有错误,那么在action中调用此 

方法所返回的结果就是所需要的商品集合wareList。并且由 

业务逻辑层支持和收集,并传到表示层中。 

F接着action在接收到想得到的结果,也就是wareList 

后,根据配置文件的ActionForward指向将wareLsit传递到指 

定的表示层JSP页面中。最后写一个循环,调用Struts标签, 

方便地将每个ware实体想显示的属性在页面中显示出来,例 

如商品名称,简介,价钱等等。 

从以上说明可以见到,三层架构既相互独立又存在数据 

交流。JAVA的编程理念就是面向对象,因此,使用J2EE的三 

层架构下,一般情况下,查询操作返回的都是实体与实体的 

集合。而另外增删改的操作则是返回是否操作成功的ture或 

者false。而有些技术框架会提供异常抛出机制,能自动抛出 

异常。 

由于三层架构相对独立,如上例所说明的那样,在数据 

操作层中,需要做的就是根据业务逻辑层给出的根据什么和 

得到什么,来写出DAO方法去实现。因此,在比较数据操作 

层技术的时候,可以抛开表示层与业务层的业务流程,专注 

于数据操作层的方法实现上。 

4数据库需求 

经过需求分析后,在详细设计时定下了以下表及其作 

用。其他的表与将要模拟实现的部分没有关系,因此不列出 

了。 

品牌表,即商品对应的牌子;一级分类表,与其他3级分 

类都是一对多;一级分类与品牌是多对多的关系,需一个中 

间表;二级分类表,与一级分类是多对一,与三四级分类是一 

对多;新闻表,记录易家购的所有新闻;特价事件表,每一段 

时间都会有一批商品进入特价期间.特价事件就是一批特价 

商品的集合,与一级分类、商品都有关联;搜索记录表,记录 

所有商品的搜索记录;商品表,记录所有商品信息,与四个分 

类,品牌都有关联;商品种类表。 

5具体实现 

5.1数据实体范例 

PromotionEvent的对象定义: 

@Entity 

@Table(name=”PromotionEvent”、 

@Cache (usage = CacheConcurrencyStrategy. 

READ

_

WRITE) 

public abstract class AbstractPromotionEvent implements 

Serializable( 

private int hashValue=O: 

1 40 I科技视界SCIENCE&TECHNOLOGY VISION 

f 

 I

f 

pfiv ̄e java.1ang.Long id; 

pfiv ̄e java.util.Set WareSet; 

privme java.1ang.Stirng imageurl; 

private java.1ang.Stirng advurl; 

,/一级分类id 

private Long eategoryllD; 

pnv ̄e mt type; 

private int rowSize; 

private String biglmageUrl; 

private Stirng name; 

(get、set方法下略) 

Search的对象定义: 

@Entity 

@Tablefname=”Search”1 

@Cache(usage=CacheConeurrencyStrategy.READ~WRITE) 

public abstract class AbstractSearch implements Serializable{ 

pfiv ̄e int hashValue=0: 

private java.1ang.Long id; 

privme java.1ang.Stirng searchKey; 

priv ̄e java.1ang.Integer searchCount; 

//一级分类id 

private Long categoryllD; 

(get、set方法下略) 

5.2对数据库的DAO操作范例 

Hibernate的实体操作: 

PmmotionEvent对PromotionEvent的数据库操作: 

public class PromotionEventDaolmpl extends Hiber- 

nateDaoSupport implements PromotionEventDao f 

/肘叟索一级分类下的所有PromotionEvent 

public List getPromotionEventByCategory1(Long catego— 

ryllD) 

throws DataAccessException,HibernateException{ 

//TODO Auto-generated method stub 

Session session=sessionFactory.openSession0; 

Transaction tx=session.geginTransaction0; 

tx=session.beginTransaction0; 

Category1 category1=(category!)session.get(category1. 

class,category11D); 

Set promotionEvents=category1.getPromotionEvents0; 

Iterator orderlterator=orders.iterator0; 

tx.commit0; 

return promotionEvents 

j 

/,搜索ID对应的PromotionEvent 

public PromotionEvent getPromotionEventBylD(Long ID) 

Science&Technology Vision 

IT论坛 

科技视界 2012年04月第1l期 

throws DataAccessException,HibernateException{ 

//TODO Auto-generated method stub 

public void updateSearch(earSch search)throws DataAcces・ 

sException, 

Session session=getSession0; 

HibernateException f 

//TODO Auto-generated method stub 

PromotionEvent promotionEvent=(PromotionEvent)ses- 

sion.createQuery(“from PromotionEvent where ID=?”).uni— 

queReasult0; 

query.setString(0,ID); 

return promotionEvent; 

getHibernateTemplate0.update(search); 

l 

,艋入一行新的search数据 

public void addSearch(earSch search)throws DataAcces— 

sException, 

} 

以上代码可以看到,只要设定好对数据库的操作,执行 

以后,返回的就是所需要的并且已经赋值好的实例。这是由 

于之前已经配置好了对象与数据表的映射,所有对数据库操 

作后所返回的数据,Hibernate会自动将其赋予对应对象的对 

应属性中,这样,能省去大量冗余的代码,程序看起来变得简 

洁,对于开发与修改来说,是相当大的帮助。就算需要临时对 

promotionEvent这个实体增加广告名称属性advName。那么就 

要在对数据库。对象的定义进行修改之后,以后的每次的操 

作都能得到已经拥有advName属性的promotionEvent实体。 

如果使用了Spring对Hibernate的支持,程序更是简洁。 

下面的程序就使用了Spring容器支持功能后的实体操作。 

对Search表的操作: 

public class SearchDaoImpl extends HibernateDaoSupport 

HibernateExceptiOil{ 

//TODO Auto-generated method stub 

getHibernateTemplate0.save(search); 

} 

根据ID返回对应的search数据 

public Search getSearch(Long searehID)throws DataAc- 

cessException,HibernateException( 

//TODO Auto-generated method stub 

etrurn(Search)getHibernateTemplate O.get(Search. 

class,searchID); 

】 

】e 

[责任编辑:王洪泽】 

implements SearchDao( 

,,修改Search表的其中一行 

(上接第89页) 

即: 

=0 

= 

}-( )J=0.5 

利用DPS软件求得 

x=36.3089 

即1601—1700这个世纪完成世界上全部重大科学发现 

: ( ) )e exp[l-( ) l一- ( ) 赶 

: 

的一半年龄是36.3089岁。 

r 置1 

叫一( )j=o 

化简后可写成下式: 

7结语 

从前边分析知:重大科学发现年龄确实服从威布尔分 

布。一般而言威布尔分布位置参数要小于自变量的最小值, 

( )( ) ( ) 

解得: 

但具体是多少,必须进行计算。e 

【参考文献】 

[1]程侃.寿命分布类与可靠性数学理论【M】.科学出版社,1999:25- 

26. 

年龄 +n( ) 

我们把各个参数代入得: 

一32.39 

[2]梁立明,赵红州.科学发现年龄定律是一种威布尔分布【J1.自然辩 

证法通讯,1991(1). 

6重大科学发现的年龄半衰期 

【责任编辑:周娜] 

我们令 


本文标签: 操作 商品 实体