jee6 学习笔记 3 - an EJB3.1 DAO

DAO interface.

package com.jxee.ejb;

import javax.ejb.Local;
import com.jxee.model.User;

/**
* although it's not required, it's good practice to define a DAO interface.
* annotation @Local marks this as an EJB local interface.
*/
@Local
public interface UserDAO {
public User findUserByName(String username);
}


DAO implemented as an EJB3.1 Stateless bean

package com.jxee.ejb;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.apache.log4j.Logger;
import com.jxee.model.User;

/**
* annotation @Stateless marks a POJO as a stateless EJB and thus it
* would have all the services available, like transaction management etc.
*/
@Stateless
public class UserDAOImp implements UserDAO {

private static final Logger log = Logger.getLogger(UserDAOImp.class);

// inject the persistence unit to have access to database
@PersistenceContext(unitName="punit.projee6")
private EntityManager em;

// @EJB AnotherEJB toInjectOtherEJB;

/**
* method throws runtime exception like "NoResultException" and
* "NonUniqueResultException" etc, which you dont need to handle.
* but you might want to handle it, such as "NoResultException".
*/
public User findUserByName(String username) {
log.debug("finding user for name: " + username);
String sql = "select u from User u where u.username = :username";
Query query = em.createQuery(sql);
query.setParameter("username", username);
return (User)query.getSingleResult(); // may throw runtime exceptions
}
}


小姐一下(本文不得不承认,windows中文输入很邪恶 :twisted: ):

1。 从EJB3.0开始,开发EJB已经非常方便了。不需要处理lifecycle,不需要进行讨厌的xml配置,利用annotation很容易。做个譬喻:都是土豆,但ejb2是带泥的土豆,而ejb3则不带泥了,洗巴的干干净净,多好。EJBs阿POJOs,测试起来也比较容易了吧。。。如果你测试上瘾的话, 哈哈。。。 :lol:

2。 DI 很方便,死脑筋(spring)还有什么优势?真是三十年河东,又三十年河西。

3。 JPA在ORM架子上又抽象了一下,提供标准的API,这多舒坦啊,别再折腾XML了!

下一篇 CRUD 一下: jee6 学习笔记 4 - CRUD
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值