传智播客java学习 EJB3进阶
我今天学习了徐老师讲的EJB3的知识,我做了简单的笔记:
SLSB无状态会话Bean的编程规则;
EJB类
编程规则
至少有一个业务接口
必须是具体类.不能是final或抽象的.
必须有空构造
可以是其它sessionbean或pojo的子类
@Stateless
public CustomerManagerBean extends BaseManagerBean
implements CustomerManager {
...
}
生命周期回调方法可以定义在bean类中或超类中.
注解继承需要受到限制,超类中@Stateless or @Stateful注解在部署时将
要被忽略.但定义的任何回调方法和资源注入都要被继承.
业务方法名不能以ejb开头,可能会干扰ejb底层处理.必须定义所有的方法为
public的,但不能是final或static的.在远程业务接口中的定义的参数和返回
值类型必须实现java串行化接口.
会话状态和Session bean类型
如果bean要维护会话状态,记住上次交流的结果,这是有状态的会话bean.这意味
着bean会从方法调用中存储数据到实例变量,并使用缓存的数据来处理下一次方
法调用.
SLSB不维护任何状态,SFSB趋向于对多个步骤的工作流进行建模,SLSB则趋向与
对常规目的进行建模. SFSB典型案例就是购物车.
SLSB-生命周期回调
Bean的生命周期回调
session bean有生命周期,意味着会有一系列状态的转变.客户端和bean都不
负责bean实例何时创建,何时销毁,何时进行优化.这些行为都由容器进行管理.
生命周期事件:
可以归结为几个阶段或事件.最明显的是创建和销毁,所有的bean都需要这两个事
件.SFSB还会有passivation(钝化)/activation(激活).
bean初始化时,会发生如下过程:
1.容器调用newInstance方法.
2.如果bean使用DI,所有依赖的资源、bean和环境组件都要注入进来.
回调方法是被注解标注的方法.比如@PostContruct和@PreDestroy.方法可以是
公有、私有、受保护和包保护的.
PostConstruct:实例创建并DI之后调用.
PreDestr
相关文档:
在命令行界面用native2ascii工具
1.将汉字转为Unicode:
C:\Program Files\Java\jdk1.5.0_04\bin>native2ascii
测试
\u6d4b\u8bd5
2.将Unicode转换为汉字:
C:\Program Files\Java\jdk1.5.0_04\bin>native2ascii -reverse ......
public static void main(string[] args)
{
int[] arrayInt=new int[] {1,2,3,4,5}
ArrayList alist =ArrayList();
//方法一
foreach(int i in alist)
{
&nbs ......
方法一:
Map map = new HashMap();
Iterator iter = map.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
Object key = entry.getKey();
Object val = entry.getValue();
}
方法二:
Map map = n ......
我今天学习了徐老师讲的ejb3的知识,我做了简单的笔记:
上午讲的是jpa的知识,下午讲的是EJB3的知识:
JPQL语句:hibernate的HQL语句一样。
简单查询:
Query query = em.createQuery("SELECT c from Customer c");
retur ......