`

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

    博客分类:
  • JEE
阅读更多
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中文输入很邪恶 ):

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

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

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

下一篇 CRUD 一下: jee6 学习笔记 4 - CRUD
分享到:
评论

相关推荐

    开发工具 eclipse-jee-mars-2-win32

    开发工具 eclipse-jee-mars-2-win32开发工具 eclipse-jee-mars-2-win32开发工具 eclipse-jee-mars-2-win32开发工具 eclipse-jee-mars-2-win32开发工具 eclipse-jee-mars-2-win32开发工具 eclipse-jee-mars-2-win32...

    eclipse-jee-oxygen-3-win32.rar

    "eclipse-jee-oxygen-3-win32.rar" 是一个针对Windows 32位系统的Eclipse版本,专为Java企业级开发(JEE)设计。这个版本是Eclipse Oxygen系列的第三个发布版,它包含了众多开发者所需的工具和特性,旨在提升开发...

    jee6 学习笔记 6.3 - @Asynchronous

    `@Asynchronous`是Java EE 6引入的EJB 3.1规范的一部分,它可以应用在无状态会话bean(Stateless Session Bean)的方法上。当一个带有`@Asynchronous`的方法被调用时,调用者会立即返回,而实际的方法执行将在另一...

    eclipse-jee-mars-1-win32-x86_64.7z

    eclipse-jee-mars-1-win32-x86_64.7z eclipse-jee-mars-1-win32-x86_64.zip 我打的 7z 压缩包 关于有 Alt + / 不起作用解决办法: window -> General -> Keys -> Content Assist -> Binding: 改为 Alt + / When:...

    eclipse-jee-neon-3-win32-x86_64.zip

    无论是开发Servlet、JSP,还是处理EJB、JMS,或者是构建RESTful服务,Eclipse JEE Neon 3 都能提供完善的工具支持。 其次,Eclipse Neon系列的一大亮点在于其改进的用户界面和用户体验。Neon版本引入了更现代的设计...

    eclipse-jee-neon-3-win32-x86_64(含常用插件)

    "eclipse-jee-neon-3-win32-x86_64"这个压缩包是针对Windows 64位系统的Eclipse版本,专为Java企业版(Java EE)开发设计。"JEE"代表Java Enterprise Edition,它包含了处理Web应用程序、分布式系统和企业级服务所需...

    eclipse-jee-2023-09-R-linux-gtk-x86-64.tar.gz

    "eclipse-jee-2023-09-R-linux-gtk-x86_64.tar.gz" 文件是Eclipse专为Java企业版(Java EE)开发者设计的2023年9月版本,适用于64位的Linux操作系统。这个版本包含了对Java EE开发所需的全部工具和功能,如Web服务器...

    eclipse-jee-2022-06-R-win32-x86_64.zip

    在解压eclipse-jee-2022-06-R-win32-x86_64.zip后,我们会得到一个名为“eclipse”的文件夹,这个文件夹包含了整个IDE的所有组件和配置。启动Eclipse IDE,用户会看到熟悉的界面,包括工作区(Workspace)、透视图...

    eclipse-jee-2021-12-R-win32-x86_64

    eclipse-jee-2021-12-R-win32-x86_64 eclipse-jee-2021-12-R-win32-x86_64 eclipse-jee-2021-12-R-win32-x86_64

    eclipse-jee-neon-1a-win_64

    eclipse-jee-neon-1a-win_64

    eclipse-jee-neon-3-win32-x86_64

    eclipse-jee-neon-3-win32-x86_64共4给4个分卷 eclipse-jee-neon-3-win32-x86_64 eclipse-jee-neon-3-win32-x86_64.z01 eclipse-jee-neon-3-win32-x86_64.z02 eclipse-jee-neon-3-win32-x86_64.z03

    eclipse-jee-oxygen-R-win32.7z.003

    eclipse-jee-oxygen-R-win32.7z.003

    eclipse-jee-2023-06-R-win32-x86-64.zip

    在Eclipse JEE版本中,这些功能得到了进一步增强,特别是对于Java EE应用程序的开发,如Web服务、Java服务器页面(JSP)、JavaServer Faces(JSF)以及Enterprise JavaBeans(EJB)等,提供了全面的工具集和模板。...

    eclipse-jee-2018-09-win32-x86_64.zip

    标题 "eclipse-jee-2018-09-win32-x86_64.zip" 提供的信息表明这是一款针对Java企业级开发的Eclipse集成开发环境(IDE)的2018年9月版本,适用于Windows 32位操作系统、x86_64架构的计算机。Eclipse是一个开源的、跨...

    eclipse-jee-2020-09-R-win32-x86_64.zip

    标题中的“eclipse-jee-2020-09-R-win32-x86_64.zip”指的是Eclipse IDE for Java EE Developers的2020年9月版本,适用于Windows 32位和64位系统的安装包。Eclipse是一款著名的开源集成开发环境(IDE),广泛用于...

    eclipse-jee-neon-3-win32.z01

    eclipse-jee-neon-3-win32共4给4个分卷 eeclipse-jee-neon-3-win32 eclipse-jee-neon-3-win32.z01 eclipse-jee-neon-3-win32.z02 eclipse-jee-neon-3-win32.z03

    eclipse-jee-2021-12-R-win32-x86_64.zip

    Eclipse IDE for Enterprise Java and Web Developers (eclipse-jee-2021-12-R-win32-x86_64.zip)适用于Windwos x86_64

    eclipse-jee-2019-03-R-win32-x86-64.zip

    Eclipse-JEE-2019-03-R-win32-x86-64.zip 是一个专门为Windows 64位系统设计的Eclipse版本,包含了Web开发所需的插件。 这个版本是2019年的第三个发布版(Release),通常每个版本都会带来性能优化、新功能和修复...

    eclipse-jee-mars-R-win32-x86_64位官方绿色版.zip

    Eclipse-jee-mars-R-win32-x86_64位官方绿色版.zip是一个针对Windows平台的64位版本的Eclipse集成开发环境(IDE)的压缩包,特别为Java企业级(J2EE)应用程序开发设计。该版本发布于2015年6月30日,是当时Eclipse ...

    eclipse-jee-2020-12-R-win32-x86_64

    《Eclipse IDE for Java开发者:深入解析eclipse-jee-2020-12-R-win32-x86_64》 Eclipse IDE,全称集成开发环境(Integrated Development Environment),是全球广泛使用的开源Java开发工具。该版本"eclipse-jee-...

Global site tag (gtag.js) - Google Analytics