仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1170|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA网页设计Jboss Ejb3.0 Entity Bean

[复制链接]
因胸联盟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:51:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
微软什么都提供了。你可以试想一下,如果你是新手,你是希望你点一下按钮程序就能运行那,还是想自己一点一点的组织结构,然后打包发部,调错再打包......




















Order.java



packageorg.jboss.tutorial.entity.bean;







importjavax.persistence.CascadeType;



importjavax.persistence.Entity;



importjavax.persistence.FetchType;



importjavax.persistence.GeneratorType;



importjavax.persistence.Id;



importjavax.persistence.OneToMany;



importjavax.persistence.Table;



importjavax.persistence.Id;



importjavax.persistence.CascadeType;



importjavax.persistence.FetchType;



importjava.util.ArrayList;



importjava.util.Collection;







@Entity



@Table(name="PURCHASE_ORDER")



//Ifthetablenameisntspecifieditdefaultstothebeanname



//oftheclass.Forinstance,theLineItemEJBwouldbemappedto



//theLINEITEMtable



publicclassOrderimplementsjava.io.Serializable



{



privateintid;



privatedoubletotal;



privateCollection<LineItem>lineItems;







@Id(generate=GeneratorType.AUTO)



publicintgetId()



{



returnid;



}







publicvoidsetId(intid)



{



this.id=id;



}







publicdoublegetTotal()



{



returntotal;



}







publicvoidsetTotal(doubletotal)



{



this.total=total;



}







publicvoidaddPurchase(Stringproduct,intquantity,doubleprice)



{



if(lineItems==null)lineItems=newArrayList<LineItem>();



LineItemitem=newLineItem();



item.setOrder(this);



item.setProduct(product);



item.setQuantity(quantity);



item.setSubtotal(quantity*price);



lineItems.add(item);



total+=quantity*price;



}







//CascadeType.ALLspecifiesthatwhenanOrderiscreated,



//anyLineItemsheldinthelineItemscollectionwillbecreated



//aswell(CascadeType.PERSIST).IftheOrderisdeletefrom



//persistencestorage,allrelatedLineItemswillbe



//deleted(CascadeType.REMOVE).IfanOrderinstanceis



//reattachedtopersistencestorage,anychangestothe



//LineItemscollectionwillbemergedwithpersistence



//storage(CascadeType.MERGE).



//FetchType.EAGERspecifiesthatwhentheOrderisloaded



//whetherornottoprefetchtherelationshipaswell.



//IfyouwanttheLineItemstobeloadedondemand,thenspecifyFetchType.LAZY.



//ThemappedByattributespecifiesthatthisisabi-directional



//relationshipthatismanagedbytheorderpropertyontheLineItementitybean.



@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER,mappedBy="order")



publicCollection<LineItem>getLineItems()



{



returnlineItems;



}







publicvoidsetLineItems(Collection<LineItem>lineItems)



{



this.lineItems=lineItems;



}



}







加了很多英文正文,但愿能看得懂。



@Table(name="PURCHASE_ORDER")



指名数据库(jboss的数据库为hsqldb)中对应得表的名字,默许为class的名字,好比上面的LineItem就没有@table。(order.java,LineItem.java都为o/r映照,值得相互对比)



@Id(generate=GeneratorType.AUTO)



递增,同数据库里的不异。必需在getter办法上标注。



@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER,mappedBy="order")



干系:order和LineItem为1对多的干系。在这里CascadeType.ALL是指明当创建一个Order被实例化后,都应当同时同时创建LineItem。正文里的就是依据二者创建工夫的分歧,界说了分歧的CascadeType。











LineItem.java



packageorg.jboss.tutorial.entity.bean;







importjavax.persistence.Entity;



importjavax.persistence.GeneratorType;



importjavax.persistence.Id;



importjavax.persistence.JoinColumn;



importjavax.persistence.ManyToOne;



importjavax.persistence.Entity;







@Entity



publicclassLineItemimplementsjava.io.Serializable



{



privateintid;



privatedoublesubtotal;



privateintquantity;



privateStringproduct;



privateOrderorder;







@Id(generate=GeneratorType.AUTO)



publicintgetId()



{



returnid;



}







publicvoidsetId(intid)



{



this.id=id;



}







publicdoublegetSubtotal()



{



returnsubtotal;



}







publicvoidsetSubtotal(doublesubtotal)



{



this.subtotal=subtotal;



}







publicintgetQuantity()



{



returnquantity;



}







publicvoidsetQuantity(intquantity)



{



this.quantity=quantity;



}







publicStringgetProduct()



{



returnproduct;



}







publicvoidsetProduct(Stringproduct)



{



this.product=product;



}







//The@JoinColumnspecifiestheforeignkeycolumnwithintheLineItemtable.



@ManyToOne



@JoinColumn(name="order_id")



publicOrdergetOrder()



{



returnorder;



}







publicvoidsetOrder(Orderorder)



{



this.order=order;



}



}















ShoppingCart.java



packageorg.jboss.tutorial.entity.bean;







importjavax.ejb.Remote;



importjavax.ejb.Remove;







@Remote



publicinterfaceShoppingCart



{



voidbuy(Stringproduct,intquantity,doubleprice);







OrdergetOrder();







@Removevoidcheckout();



}















ShoppingCartBean.java



packageorg.jboss.tutorial.entity.bean;







importjavax.persistence.EntityManager;



importjavax.ejb.Inject;



importjavax.ejb.Remove;



importjavax.ejb.Stateful;











@Stateful



publicclassShoppingCartBeanimplementsShoppingCart



{



@Inject



privateEntityManagermanager;//TheEntityManagerisusedtodoquerying,



//creating,findbyprimarykey,andremovalofentitybeans.



privateOrderorder;







publicvoidbuy(Stringproduct,intquantity,doubleprice)



{



if(order==null)order=newOrder();



order.addPurchase(product,quantity,price);



}







publicOrdergetOrder()



{



returnorder;



}







@Remove



publicvoidcheckout()



{



manager.persist(order);



}



}







EntityManager的感化可年夜了,能够用于查询,创立,删除实体Bean,这里拔出个EntityManager,次要是在最初用户分开时,在数据库里保留数据,相称于保留个object。运转完Client.java后就能够在hsqldb上看到有purchase_order和LineItem的两张表。HypersonicDatabase,找到startDatabaseManager然后上面有个invoke,点击就能够会见hsqldb了。











Client.java



packageorg.jboss.tutorial.entity.client;











importorg.jboss.tutorial.entity.bean.LineItem;



importorg.jboss.tutorial.entity.bean.Order;



importorg.jboss.tutorial.entity.bean.ShoppingCart;







importjavax.naming.InitialContext;







publicclassClient



{



publicstaticvoidmain(String[]args)throwsException



{



InitialContextctx=newInitialContext();



ShoppingCartcart=(ShoppingCart)ctx.lookup(ShoppingCart.class.getName());







System.out.println("Buying2memorysticks");



cart.buy("Memorystick",2,500.00);



System.out.println("Buyingalaptop");



cart.buy("Laptop",1,2000.00);







System.out.println("Printcart:");



Orderorder=cart.getOrder();



System.out.println("Total:$"+order.getTotal());



for(LineItemitem:order.getLineItems())



{



System.out.println(item.getQuantity()+""+item.getProduct()+""+item.getSubtotal());



}







System.out.println("Checkout");



cart.checkout();



}



}











这里附上log4j.properties在jboss-EJB-3.0_Preview_5.zip 内里没有这个总是显现短少appender。有了这个将在该目次下天生个record.log日记文件。







log4j.properties



log4j.appender.R=org.apache.log4j.RollingFileAppender



log4j.appender.R.File=record.log



log4j.appender.R.layout=org.apache.log4j.PatternLayout



log4j.appender.R.layout.ConversionPattern=%p%d{hh:mm:ss}%t%c{1}-%m%n



log4j.appender.R.MaxBackupIndex=1



log4j.appender.R.MaxFileSize=100KB



log4j.appender.stdout.layout=org.apache.log4j.PatternLayout



log4j.appender.stdout.layout.ConversionPattern=%5p[%t](%F:%L)-%m%n



log4j.appender.stdout=org.apache.log4j.ConsoleAppender



log4j.rootLogger=stdout,R















运转:参考installing.html



Windows下



翻开命令提醒符cmd,到jboss_home/bin



Run.bat&ndash;call



用ant



先build后run就好了。























他们对jsp,servlet,javabean进行封装就是为了展示他们的某个思想,与java的开发并没有必然的关系,也不见得在所以情况下,别人使用起来会简单。
愤怒的大鸟 该用户已被删除
沙发
发表于 2015-1-21 16:27:25 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
若天明 该用户已被删除
板凳
发表于 2015-1-30 21:08:52 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
精灵巫婆 该用户已被删除
地板
发表于 2015-2-6 15:58:56 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
蒙在股里 该用户已被删除
5#
发表于 2015-2-9 03:35:58 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
再现理想 该用户已被删除
6#
发表于 2015-2-26 20:46:08 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
柔情似水 该用户已被删除
7#
发表于 2015-3-5 16:48:04 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
简单生活 该用户已被删除
8#
发表于 2015-3-7 01:15:15 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
海妖 该用户已被删除
9#
发表于 2015-3-13 23:52:27 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
若相依 该用户已被删除
10#
发表于 2015-3-20 22:19:29 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
11#
发表于 2015-3-22 00:55:35 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
灵魂腐蚀 该用户已被删除
12#
发表于 2015-3-22 05:37:52 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
冷月葬花魂 该用户已被删除
13#
发表于 2015-4-8 09:08:57 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
admin 该用户已被删除
14#
发表于 2015-4-11 07:18:52 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
谁可相欹 该用户已被删除
15#
发表于 2015-4-11 11:28:16 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
小妖女 该用户已被删除
16#
发表于 2015-4-16 08:11:08 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
不帅 该用户已被删除
17#
发表于 2015-4-17 09:05:56 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
小魔女 该用户已被删除
18#
发表于 2015-4-19 13:39:31 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
因胸联盟 该用户已被删除
19#
 楼主| 发表于 2015-4-25 13:22:33 | 只看该作者
是一种突破用户端机器环境和CPU
莫相离 该用户已被删除
20#
发表于 2015-4-28 07:48:30 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 22:27

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表