JBoss 4.2.x Spring 3 JPA Hibernate教程

在花了许多时间在网上搜索之后,尝试找到对几个项目使用Spring,JPA和Hibenate的最有效方法,我们得出了将在下面介绍的配置的结论。 将Spring与JPA和Hibernate集成包括几个步骤:

  • Spring容器的配置
  • JPA ORM层的配置
  • Hibernate Second lvl缓存的配置(如果需要)

请记住,就数据源而言,我们假设我们在J2EE容器内进行操作,因此我们将要从JNDI查找现有数据源并使用它。 我们将要配置的文件如下所述:

  1. spring.xml文件,用于驱动spring容器。
  2. 驱动JPA ORM层的persistence.xml文件
  3. 第二个lvl缓存文件,例如JBoss TreeCache提供程序的treecache.xml (如果需要)

下面是一个示例spring.xml文件:

<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
 xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
 xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
 xmlns:task="http://www.springframework.org/schema/task"
 xsi:schemaLocation="
   http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
   http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
   http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
   http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
   http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
   http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"
>

 <context:component-scan base-package="com.mycomp.mypackage" />

 <task:annotation-driven executor="myExecutor" scheduler="myScheduler" />

 <task:executor id="myExecutor" pool-size="5" />

 <task:scheduler id="myScheduler" pool-size="10" />

 <tx:annotation-driven />

 <bean id="entityManagerFactory"
  class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  <property name="persistenceUnitName" value="MyPersistenceUnit" />
 </bean>

 <bean id="transactionManager"
  class="org.springframework.transaction.jta.JtaTransactionManager">
  <property name="transactionManagerName" value="java:/TransactionManager" />
  <property name="userTransactionName" value="UserTransaction" />
 </bean>

</beans>

这里需要注意的几件事

  • 将context:component-scan标签的base-package属性更改为项目的基本包,以便对其进行Spring组件(服务,DAO等)的扫描。
  • 根据persistence.xml文件中的指示,将entityManagerFactory bean的persistentUnitName属性的value属性更改为您的持久单元的名称

下面显示了一个示例persistence.xml文件:

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation=
  "http://java.sun.com/xml/ns/persistence 
   http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
 version="1.0">

 <persistence-unit name="MyPersistenceUnit" transaction-type="JTA">

  <provider>org.hibernate.ejb.HibernatePersistence</provider>
  <jta-data-source>java:/MyDataSource</jta-data-source>
 
  <properties>
   <property name="hibernate.dialect"  
     value="org.hibernate.dialect.HSQLDialect"/>
   <property name="hibernate.hbm2ddl.auto" value="update"/>
   <property name="hibernate.show_sql" value="false"/>
   <property name="hibernate.transaction.manager_lookup_class"  
     value="org.hibernate.transaction.JBossTransactionManagerLookup"/>

   <!-- Uncomment below to use Hibernate second lvl cache -->
   <!--
   <property name="hibernate.cache.provider_class" 
     value="org.hibernate.cache.TreeCacheProvider"/>
   <property name="hibernate.treecache.mbean.object_name" 
     value="jboss.cache:service=TreeCache"/>
   <property name="hibernate.cache.use_second_level_cache" 
     value="true"/>
   <property name="hibernate.cache.use_query_cache" 
     value="true"/>
   <property name="hibernate.cache.use_structured_entries" 
     value="true"/>
   -->
  </properties>

 </persistence-unit>

</persistence>

这里需要注意的几件事:

  • 持久性单元名称(此处为MyPersistenceUnit)必须与spring.xml文件中的值匹配
  • 事务类型可以具有JTA或LOCAL值,我们的假设是我们正在启用JTA的容器中进行部署,因此我们可以利用全局事务(JTA),在任何其他情况下,都应使用LOCAL值
  • 如上所述,我们假设我们正在J2EE容器中进行部署,并且数据源在单独的文件中声明并且位于JNDI中,因此我们指示JPA使用在特定JNDI名称下找到的数据源,您应该根据您的数据源JNDI名称
  • 我们要求休眠状态使用Hypersonic方言,您应该根据数据源更改此值,例如,对于MySQL,此值应为org.hibernate.dialect.MySQLDialect(用于myISAM引擎)或org.hibernate.dialect.MySQLInnoDBDialect(用于InnoDB引擎)
  • 我们要求休眠状态来查找我们的JTA事务管理器,例如,如果我们在JBoss内部部署,则使用指定的值,您应该根据您的环境更改此值
  • 如果要启用Hibernate第二个lvl缓存,只需取消注释指定的配置指令

下面显示了一个示例第二个lvl缓存(JBoss树缓存– treecache.xml)文件:

<server>

 <classpath codebase="./lib" archives="jboss-cache.jar, jgroups.jar" />

 <mbean code="org.jboss.cache.TreeCache" name="jboss.cache:service=TreeCache">
  <depends>jboss:service=Naming</depends>
  <depends>jboss:service=TransactionManager</depends>
  <attribute name="TransactionManagerLookupClass">
   org.jboss.cache.JBossTransactionManagerLookup</attribute>
  <attribute name="IsolationLevel">REPEATABLE_READ</attribute>
  <attribute name="CacheMode">LOCAL</attribute>
  <attribute name="UseReplQueue">false</attribute>
  <attribute name="ReplQueueInterval">0</attribute>
  <attribute name="ReplQueueMaxElements">0</attribute>
  <attribute name="ClusterName">TreeCache-Cluster</attribute>
  <attribute name="ClusterConfig">
   <config>
    <UDP mcast_addr="228.1.2.3" mcast_port="48866" ip_ttl="64"
     ip_mcast="true" mcast_send_buf_size="150000" mcast_recv_buf_size="80000"
     ucast_send_buf_size="150000" ucast_recv_buf_size="80000" loopback="false" />
    <PING timeout="2000" num_initial_members="3" up_thread="false"
     down_thread="false" />
    <MERGE2 min_interval="10000" max_interval="20000" />
    <FD_SOCK />
    <VERIFY_SUSPECT timeout="1500" up_thread="false"
     down_thread="false" />
    <pbcast.NAKACK gc_lag="50" retransmit_timeout="600,1200,2400,4800"
     max_xmit_size="8192" up_thread="false" down_thread="false" />
    <UNICAST timeout="600,1200,2400" window_size="100"
     min_threshold="10" down_thread="false" />
    <pbcast.STABLE desired_avg_gossip="20000" up_thread="false"
     down_thread="false" />
    <FRAG frag_size="8192" down_thread="false" up_thread="false" />
    <pbcast.GMS join_timeout="5000" join_retry_timeout="2000"
     shun="true" print_local_addr="true" />
    <pbcast.STATE_TRANSFER up_thread="true"
     down_thread="true" />
   </config>
  </attribute>
  <attribute name="FetchInMemoryState">true</attribute>
  <attribute name="InitialStateRetrievalTimeout">20000</attribute>
  <attribute name="SyncReplTimeout">20000</attribute>
  <attribute name="LockAcquisitionTimeout">15000</attribute>
  <attribute name="EvictionPolicyClass"></attribute>
  <attribute name="UseMarshalling">false</attribute>
 </mbean>

</server>

这里需要注意的几件事

  • 更新类加载器的路径,以找到两个必需的文件(jboss-cache.jar,jgroups.jar),JBoss树缓存才能正常工作
  • 该文件将树缓存配置为JBoss MBean服务,因此必须将其部署在JBoss应用服务器中,其他配置类型不在本教程的讨论范围之内,因此将不作进一步讨论。 有关在其他环境中配置JBoss树缓存的信息,请参考相应的文档。

就是这样,现在让我根据上述配置介绍一个示例DTO和DAO:

首先是DTO类(EmployeeDTO)

package com.mycomp.myproject.dto;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "EMPLOYEE")
public class EmployeeDTO implements java.io.Serializable {
    
    private static final long serialVersionUID = 7440297955003302414L;

    @Id
    @Column(name="employee_id")
    private long employeeId;
    
    @Column(name="employee_name", nullable = false, length=30)
    private String employeeName;
    
    @Column(name="employee_surname", nullable = false, length=30)
    private String employeeSurname;
    
    @Column(name="job", length=50)
    private String job;
        
    public EmployeeDTO() {
    }

    public EmployeeDTO(int employeeId) {
        this.employeeId = employeeId;        
    }

    public EmployeeDTO(long employeeId, String employeeName, String employeeSurname,
            String job) {
        this.employeeId = employeeId;
        this.employeeName = employeeName;
        this.employeeSurname = employeeSurname;
        this.job = job;
    }

    public long getEmployeeId() {
        return employeeId;
    }

    public void setEmployeeId(long employeeId) {
        this.employeeId = employeeId;
    }

    public String getEmployeeName() {
        return employeeName;
    }

    public void setEmployeeName(String employeeName) {
        this.employeeName = employeeName;
    }

    public String getEmployeeSurname() {
        return employeeSurname;
    }

    public void setEmployeeSurname(String employeeSurname) {
        this.employeeSurname = employeeSurname;
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

}

以下是用于访问员工数据的DAO类(EmployeeDTO)

package com.mycomp.myproject.dao;

import javax.annotation.PostConstruct;
import javax.persistence.EntityManagerFactory;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.mycomp.myproject.dto.EmployeeDTO;

@Repository("employeeDAO")
public class EmployeeDAO extends JpaDAO<Long, EmployeeDTO> {
    
    @Autowired
    EntityManagerFactory entityManagerFactory;
    
    @PostConstruct
    public void init() {
        super.setEntityManagerFactory(entityManagerFactory);
    }
    
}

如您所见,EmployeeDAO类扩展了基本的DAO类(JpaDao)。 EmployeeDAO类可以包含有关EmployeeDTO对象的特定查询,但是所有CRUD操作都可以从下面提供的基本DAO类(JpaDao)中进行处理:

package com.mycomp.myproject.dao; 

import java.lang.reflect.ParameterizedType; 
import java.util.List; 

import javax.persistence.EntityManager; 
import javax.persistence.PersistenceException; 
import javax.persistence.Query; 

import org.springframework.orm.jpa.JpaCallback; 
import org.springframework.orm.jpa.support.JpaDaoSupport; 

public abstract class JpaDAO<K, E> extends JpaDaoSupport { 
    protected Class<E> entityClass; 

    @SuppressWarnings("unchecked") 
    public JpaDAO() { 
        ParameterizedType genericSuperclass = (ParameterizedType) getClass() 
                .getGenericSuperclass(); 
        this.entityClass = (Class<E>) genericSuperclass 
                .getActualTypeArguments()[1]; 
    } 

    public void persist(E entity) { 
        getJpaTemplate().persist(entity); 
    } 

    public void remove(E entity) { 
        getJpaTemplate().remove(entity); 
    } 
    
    public E merge(E entity) { 
        return getJpaTemplate().merge(entity); 
    } 
    
    public void refresh(E entity) { 
        getJpaTemplate().refresh(entity); 
    } 

    public E findById(K id) { 
        return getJpaTemplate().find(entityClass, id); 
    } 
    
    public E flush(E entity) { 
        getJpaTemplate().flush(); 
        return entity; 
    } 
    
    @SuppressWarnings("unchecked") 
    public List<E> findAll() { 
        Object res = getJpaTemplate().execute(new JpaCallback() { 

            public Object doInJpa(EntityManager em) throws PersistenceException { 
                Query q = em.createQuery("SELECT h FROM " + 
                        entityClass.getName() + " h"); 
                return q.getResultList(); 
            } 
            
        }); 
        
        return (List<E>) res; 
    } 

    @SuppressWarnings("unchecked") 
    public Integer removeAll() { 
        return (Integer) getJpaTemplate().execute(new JpaCallback() { 

            public Object doInJpa(EntityManager em) throws PersistenceException { 
                Query q = em.createQuery("DELETE FROM " + 
                        entityClass.getName() + " h"); 
                return q.executeUpdate(); 
            } 
            
        }); 
    }
    
}

本教程的第二部分总结了我们将在此处讨论有关Spring服务创建的内容

贾斯汀

翻译自: https://www.javacodegeeks.com/2010/05/jboss-42x-spring-3-jpa-hibernate.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
中文名: 经典Java EE企业应用实战--基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 原名: 经典Java EE企业应用实战--基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 作者: 李刚 资源格式: PDF 版本: 第一版 出版社: 电子工业出版社书号: 9787121115349发行时间: 2010年8日 地区: 大陆 语言: 简体中文 简介: 内容简介:   本书是《轻量级java ee企业应用实战》的姊妹篇,《轻量级java ee企业应用实战》主要介绍以spring+hibernate为基础的java ee应用;本书则主要介绍以ejb 3+jpa为基础的java ee应用。ejb 3、jpa规范都属于sun公司所制订的java ee规范,因此把基于ejb 3+jpa的应用称为经典java ee架构,目前这种架构在java开发领域也有极大的市场占有率。   本书介绍了java ee规范的三大主要规范jsf、ejb 3和jpa,其中jsf是sun公司提供的jsf ri;ejb 3部分则包含session bean、message driven bean的详细介绍。所使用的应用服务器是jboss 5.1和weblogic 11g,详细介绍了这两种应用服务器的安装和使用,以及如何在两大主流服务器上安装、部署java ee应用。   本书内容主要包括三部分,第一部分介绍java ee开发的基础知识,以及如何搭建开发环境,包括安装jboss、weblogic应用服务器,以及如何使用svn、netbeans等。第二部分详细讲解了jsf ri、jta、jndi、rmi、jms、javamail、ejb 3的session bean、message driven bean、jpa、jax-ws 2、jaas等java ee知识,这部分知识以jsf+ejb 3+jpa整合开发为重点,通过使用netbeans ide工具上手,带领读者逐步深入jsf+ejb 3+jpa整合开发。这部分内容是笔者讲授“疯狂java实训”的培训讲义,也是本书的重点部分。第三部分提供了一个jsf+ejb 3+ jpa整合开发的项目:电子拍卖系统。这个项目包括5个实体,这5个实体之间具有复杂的关联关系,而且业务逻辑也相对复杂,希望让读者理论联系实际,真正将jsf+ejb 3+jpa整合真正运用到实际开发中。该案例采用目前最流行、最规范的java ee架构,整个应用分为jpa实体层、eao层、业务逻辑层、mvc层和视图层,各层之间分层清晰,层与层之间以松耦合的方法组织在一起。该案例既提供了ide无关的、基于ant管理的项目源码,也提供了基于netbeans ide的项目源码,最大限度地满足读者的需求。 作者简介: 李刚,从事10年的Java EE应用开发。曾任LITEON公司的J2EE技术主管,负责该公司的企业信息平台的架构设计。曾任广州电信、广东龙泉科技等公司的技术培训导师。2007年3月26日的《电脑报》专访人物。现任新东方广州中心软件教学总监,并曾任广东技术师范学院计算机科学系的兼职副教授。   培训的学生已在华为、立信、普信、网易、电信盈科、中企动力等公司就职。   国内知名的高端IT技术作家,已出版《Spring 2.0宝典》、《基于J2EE的Ajax宝典》、《轻量级J2EE企业应用实战》、《Struts 2权威指南》、《Ruby On Rails敏捷开发最佳实践》等著作。 目录: 第0章 学习Java的正确方法 1 0.1 我适合不适合编程 2 0.2 走出象牙塔 4 0.3 学习Java,应该如此疯狂 7 第1章 经典Java EE应用和开发环境 9 1.1 经典Java EE应用概述 10 1.1.1 Java EE 6相关规范 10 1.1.2 经典Java EE应用的分层模型 11 1.1.3 经典Java EE应用的组件 13 1.1.4 经典Java EE应用架构的优势 13 1.1.5 常用的企业服务器 14 1.2 经典Java EE应用相关技术 14 1.2.1 JSP、Servlet和JavaBean及 替代技术 14 1.2.2 JSF及替代技术 15 1.2.3 EJB组件技术简介 15 1.3 JBoss的下载和安装 15 1.3.1 下载和安装JBoss服务器 16 1.3.2 配置JBoss的服务端口 18 1.3.3 进入控制台 19 1.3.4 部署Web应用 22 1.4 WebLogic的下载和安装 24 1.4.1 WebLogic的下载和安装 24 1.4.2 WebLogic的基本配置 25 1.4.3 修改WebLogic的服务端口 29 1.4.4 部署Web应用 30 1.5 NetBeans的安装和使用 32 1.5.1 NetBeans的下载和安装 32 1.5.2 使用NetBeans开发Java EE应用 33 1.5.3 打开NetBeans项目 36 1.5.4 导入Eclipse项目 37 1.6 使用SVN进行协作开发 38 1.6.1 下载和安装SVN服务器 39 1.6.2 配置SVN资源库 39 1.6.3 下载和安装SVN客户端 41 1.6.4 发布项目到服务器 41 1.6.5 从服务器下载项目 42 1.6.6 提交(Commit)修改 42 1.6.7 同步(Update)本地文件 43 1.6.8 添加文件和目录 44 1.6.9 删除文件和目录 45 1.6.10 查看文件或目录的版本变革 45 1.6.11 从以前版本重新开始 46 1.6.12 创建分支 46 1.6.13 沿着分支开发 46 1.6.14 合并分支 47 1.6.15 使用NetBeans作为SVN客户端 48 1.7 本章小结 50 第2章 JSF的基本用法 51 2.1 MVC和JSF 52 2.1.1 MVC和常见MVC框架 52 2.1.2 JSF的优势 56 2.2 下载和安装JSF 57 2.3 JSF使用入门 60 2.3.1 从输入页面开始 60 2.3.2 开发托管Bean 61 2.3.3 定义导航规则 63 2.4 解读JSF配置 65 2.4.1 配置核心控制器(FacesServlet) 65 2.4.2 JSF配置文件结构 68 2.5 托管Bean和表达式语言 69 2.5.1 托管Bean的属性和表达式语言 69 2.5.2 托管Bean的方法 78 2.5.3 托管Bean的分类 80 2.5.4 初始化托管Bean的属性 85 2.5.5 通过FacesContext访问应用环境 89 2.6 导航模型 91 2.6.1 静态导航 93 2.6.2 动态导航 93 2.7 使用UI标签创建视图页面 94 2.7.1 UI标签概述 94 2.7.2 UI标签的通用属性 97 2.7.3 表单相关标签 98 2.7.4 其他标签 103 2.8 JSF的运行流程和生命周期 109 2.8.1 恢复视图阶段 110 2.8.2 应用请求值阶段 110 2.8.3 处理输入校验阶段 111 2.8.4 更新模型的值阶段 111 2.8.5 调用应用阶段 111 2.8.6 生成响应阶段 111 2.9 利用JSF的消息 112 2.10 本章小结 116 第3章 深入使用JSF 117 3.1 JSF事件机制 118 3.1.1 Java事件模型概述 118 3.1.2 Java事件模型示例 119 3.1.3 JSF事件模型 120 3.1.4 Action事件 122 3.1.5 值改变事件 125 3.1.6 生命周期事件 128 3.1.7 将监听器绑定到Bean属性 130 3.2 JSF的国际化支持 132 3.2.1 加载国际化资源文件 132 3.2.2 使用国际化消息 134 3.2.3 动态数据国际化 137 3.2.4 让用户选择语言 142 3.3 使用转换器完成类型转换 143 3.3.1 转换器概述、用途 144 3.3.2 JSF内建转换器 144 3.3.3 使用转换器 145 3.3.4 转换失败后的错误消息 149 3.4 自定义转换器 154 3.4.1 实现转换器类 154 3.4.2 注册转换器 156 3.4.3 使用自定义转换器 159 3.4.4 绑定到Bean属性的转换器 159 3.5 使用验证器进行输入校验 161 3.5.1 输入校验概述 161 3.5.2 JSF内置校验器 162 3.5.3 校验失败后的错误消息 163 3.5.4 必填校验器 165 3.6 自定义校验器 166 3.6.1 开发自定义校验器 166 3.6.2 注册校验器 167 3.6.3 使用自定义校验器 168 3.6.4 为自定义校验器开发专用标签 169 3.6.5 使用托管Bean的方法执行校验 173 3.6.6 绑定到Bean属性的校验器 175 3.7 本章小结 177 第4章 利用JDBC和JTA访问 数据库和管理全局事务 178 4.1 JDBC和容器管理的数据源 179 4.1.1 JDBC概述 179 4.1.2 使用JDBC执行数据库访问 180 4.1.3 使用WebLogic服务器管理的 数据源 182 4.1.4 使用JBoss服务器管理的数据源 187 4.2 事务和JTA 191 4.2.1 事务的基本概念 191 4.2.2 分布式事务处理、XA规范和 2PC协议 192 4.2.3 使用JTA全局事务保证多 数据库的一致性 193 4.3 事务隔离、传播属性的设置 198 4.3.1 并发访问和隔离 198 4.3.2 事务属性 199 4.4 EJB的事务管理 201 4.4.1 容器管理事务(CMT) 201 4.4.2 Bean管理事务(BMT) 201 4.5 事务超时设置 201 4.6 本章小结 203 第5章 JNDI和远程方法调用 204 5.1 JNDI的概念 205 5.1.1 命名服务 205 5.1.2 目录服务 206 5.1.3 JNDI的优点 206 5.2 JNDI编程入门 207 5.2.1 文件系统的命名服务 207 5.2.2 JNDI编程 208 5.3 服务器提供的JNDI支持 212 5.3.1 WebLogic的JNDI支持 212 5.3.2 JBoss的JNDI支持 215 5.4 RMI概述 216 5.4.1 RMI的相关概念 216 5.4.2 RMI的作用和意义 217 5.5 RMI编程 217 5.5.1 开发RMI服务器 217 5.5.2 开发RMI客户端 220 5.5.3 RMI的基本原理 220 5.6 同时作为客户端和服务器的 RMI程序 222 5.6.1 开发客户端程序 222 5.6.2 开发服务器端程序 223 5.7 本章小结 225 第6章 利用JMS实现企业消息处理 226 6.1 面向消息的架构和JMS概述 227 6.1.1 面向消息的应用架构 227 6.1.2 JMS的基础知识和优势 228 6.1.3 JMS的两个重要版本 229 6.2 PTP类型的JMS 230 6.2.1 配置PTP的JMS服务器 231 6.2.2 PTP消息的发送 241 6.2.3 PTP消息的同步接收 244 6.2.4 PTP消息的异步接收 246 6.3 Pub-Sub类型的JMS 248 6.3.1 配置Pub-Sub模型的JMS 服务器 248 6.3.2 消息的生产、消费 250 6.3.3 可靠的JMS订阅 251 6.4 JMS消息 253 6.4.1 JMS消息类型 253 6.4.2 JMS消息头和消息属性 253 6.4.3 重用消息对象 254 6.4.4 JMS传递方式和有效时间 255 6.4.5 设置消息的优先级 256 6.4.6 消息的确认方式 256 6.4.7 消息选择器 257 6.4.8 消息的临时目的261 6.5 使用队列浏览器查看全部消息 264 6.6 JMS和事务 265 6.6.1 使用事务性Session 265 6.6.2 利用JTA全局事务 267 6.7 JMS服务器的异常监听 268 6.8 JMS集群 269 6.9 本章小结 270 第7章 利用JavaMail实现E-mail 271 7.1 E-mail简介 272 7.1.1 SMTP协议简介 272 7.1.2 POP3协议简介 272 7.1.3 IMAP4协议简介 273 7.1.4 E-mail的用途 273 7.2 JavaMail介绍 274 7.2.1 JavaMail下载和安装 274 7.2.2 JavaMail的常用API 275 7.2.3 使用JavaMail发送邮件 277 7.2.4 使用JavaMail接收邮件 281 7.3 应用服务器的JavaMail支持 287 7.3.1 在WebLogic中配置JavaMail 288 7.3.2 通过WebLogic的邮件支持来 发送邮件 290 7.3.3 在JBoss中配置JavaMail 292 7.4 本章小结 294 第8章 会话EJB 295 8.1 EJB概述 296 8.1.1 EJB的概念和意义 296 8.1.2 EJB的发展历史 298 8.1.3 EJB的优势和使用场景 299 8.2 EJB的分类 301 8.2.1 Session Bean的概念和作用 302 8.2.2 Message Driven Bean的概念和 作用 303 8.2.3 实体和JPA 303 8.3 开发无状态的Session Bean 304 8.3.1 开发远程调用的无状态 Session Bean 304 8.3.2 开发本地调用的无状态 Session Bean 311 8.4 发布Session Bean 314 8.4.1 打包EJB-JAR 315 8.4.2 Annotation与部署描述文件 315 8.5 开发有状态的Session Bean 318 8.6 Session Bean的生命周期 321 8.6.1 无状态Session Bean的生命周期 321 8.6.2 有状态Session Bean的生命周期 322 8.6.3 定制Session Bean的生命 周期行为 323 8.7 在Session Bean中使用事务 327 8.7.1 容器管理事务 327 8.7.2 Bean管理事务 330 8.8 拦截器 332 8.9 依赖注入 335 8.9.1 EJB注入 336 8.9.2 资源注入 339 8.10 配置EJB引用 340 8.11 使用计时器进行任务调度 342 8.12 本章小结 345 第9章 消息驱动EJB 346 9.1 JMS和EJB 347 9.1.1 为什么使用MDB 347 9.1.2 使用MDB的设计原则 348 9.2 使用消息驱动Bean 349 9.2.1 使用@MessageDriven和@ActivationConfigProperty 350 9.2.2 实现MessageListener 352 9.2.3 MDB的生命周期 353 9.2.4 MDB中的依赖注入 356 9.2.5 事务管理和异常处理 359 9.3 使用NetBeans开发EJB 359 9.3.1 使用NetBeans开发Session Bean 359 9.3.2 使用NetBeans开发MDB 362 9.4 本章小结 363 第10章 Java持久化API(JPA) 364 10.1 实体简介 365 10.1.1 对象/关系数据库映射(ORM) 365 10.1.2 JPA的映射规则 367 10.1.3 JPA规范简介 368 10.2 实体入门 368 10.2.1 开发实体 369 10.2.2 在Java SE环境下使用 Hibernate JPA实现 370 10.2.3 在Java SE环境下使用 TopLink JPA实现 374 10.2.4 在Java SE环境下使用 EntityManager 377 10.2.5 使用orm.xml管理O/R映射 379 10.3 理解实体 382 10.3.1 持久化上下文和持久化单元 382 10.3.2 实体类的要求 382 10.3.3 实体的状态 383 10.3.4 管理实体的方法 384 10.4 实体的基本映射387 10.4.1 映射实体类的属性 387 10.4.2 将实体映射到多个表 394 10.4.3 映射复合类型的属性 396 10.4.4 映射实体类的主键 398 10.5 关联关系映射 402 10.5.1 单向N-1关联 403 10.5.2 单向1-1关联 406 10.5.3 单向1-N关联 409 10.5.4 单向N-N关联 411 10.5.5 双向1-1关联 414 10.5.6 双向1-N关联 417 10.5.7 双向N-N关联 420 10.5.8 使用Map集合记录关联实体 423 10.5.9 对关联实体进行排序 424 10.6 继承关系映射 426 10.6.1 整个类层次对应一张表的 映射策略 427 10.6.2 连接子类的映射策略 430 10.6.3 每个具体类对应一张表的 映射策略 434 10.7 使用抽象实体和非实体父类 436 10.7.1 抽象实体 436 10.7.2 非实体父类 438 10.7.3 重定义子类实体的外键列 440 10.8 实体的生命周期和监听器 444 10.8.1 实体的生命周期与回调事件 444 10.8.2 使用专门的监听器实现回调 448 10.8.3 为全部实体配置默认监听器 450 10.8.4 排除监听器 452 10.9 本章小结 455 第11章 JPA的查询支持 456 11.1 查询API 457 11.1.1 面向对象的JPQL 457 11.1.2 查询API简介 457 11.2 执行查询 459 11.2.1 使用Query创建查询 459 11.2.2 设置查询参数 459 11.2.3 取得查询结果 460 11.3 JPQL语法 461 11.3.1 使用from子句 462 11.3.2 使用select子句 463 11.3.3 查询部分属性 463 11.3.4 查询中使用构造器 464 11.3.5 使用distinct排除相同的记录 465 11.3.6 where子句和条件表达式 466 11.3.7 使用JPQL函数 466 11.3.8 多态查询 467 11.3.9 关联和连接 469 11.3.10 使用order by进行结果排序 473 11.3.11 JPQL查询的聚集函数 473 11.3.12 使用group by进行分组 474 11.3.13 结果集分页 475 11.3.14 使用子查询 475 11.3.15 命名查询 476 11.4 批量更新和批量删除 478 11.4.1 批量更新 479 11.4.2 批量删除 480 11.5 原生SQL查询 481 11.5.1 使用原生SQL查询 481 11.5.2 结果集映射和实体查询 482 11.5.3 使用命名的原生SQL查询 486 11.5.4 调用存储过程 488 11.6 本章小结 490 第12章 Web层和EJB的整合 491 12.1 Java EE应用的架构 492 12.1.1 SSH架构的复习和应用架构的 思考 492 12.1.2 MVC层和业务层整合 494 12.1.3 DAO模式和EAO模式 495 12.1.4 使用Session Facade模式 499 12.2 从Web层访问Session Bean 500 12.2.1 使用依赖注入访问无状态 Session Bean 501 12.2.2 通过EJB引用访问有状态 Session Bean 507 12.2.3 在工具类中调用Session Bean 509 12.3 在Web层使用JPA 511 12.3.1 使用容器管理的EntityManager 512 12.3.2 在容器内使用应用程序管理的 EntityManager 516 12.3.3 通过ThreadLocal在容器外使用 安全的EntityManager 518 12.4 基于JBoss的JSF+EJB 3+JPA 整合 522 12.4.1 开发JPA实体 522 12.4.2 开发EAO对象 524 12.4.3 开发业务逻辑组件 526 12.4.4 定义JSF的托管Bean来 处理请求 527 12.5 基于WebLogic的Struts 2+ EJB 3+JPA整合 531 12.5.1 开发实体并配置持久化单元 531 12.5.2 开发EAO组件和业务逻辑组件 532 12.5.3 配置EJB引用 532 12.5.4 定义Action来处理用户请求 532 12.6 本章小结 536 第13章 EJB和Web Service 537 13.1 Web Service概述 538 13.1.1 Web Service概述 538 13.1.2 Web Service平台概述 539 13.1.3 Web Service的广泛应用 542 13.2 JAX-WS:Java EE 5 Web Service平台 543 13.2.1 Java EE的Web Service支持 543 13.2.2 为什么选择EJB开发 Web Service 544 13.3 使用JAX-WS 2.0开发 Web Service 545 13.3.1 使用@WebService 545 13.3.2 使用@WebMethod 551 13.3.3 使用@SOAPBinding指定 Web Service风格 553 13.3.4 使用@WebParam 555 13.3.5 使用@WebResult 556 13.3.6 使用@OneWay 558 13.4 客户端调用Web Service 558 13.5 本章小结 559 第14章 利用JAAS开发安全的应用 560 14.1 JAAS概述 561 14.1.1 Java EE应用的安全概述 561 14.1.2 安全域、用户、组和角色概念 561 14.1.3 JAAS的基本流程 563 14.2 管理服务器的用户和组 565 14.2.1 管理WebLogic服务器上的 用户和组 565 14.2.2 管理JBoss服务器上的用户和 角色 573 14.2.3 使用RDBMS管理Jboss 服务器上的用户和角色 574 14.3 开发安全的Web应用 576 14.3.1 声明安全性 576 14.3.2 映射安全角色 579 14.3.3 基于JBoss服务器的表单登录 580 14.3.4 基于WebLogic服务器的安全 角色映射 583 14.3.5 基于WebLogic服务器的 表单登录 583 14.3.6 Web应用中编程式安全 584 14.4 开发安全的Java EE应用 585 14.4.1 为EJB声明安全性 585 14.4.2 应用客户端访问被保护的方法 587 14.4.3 使用Web组件调用EJB被 保护的方法 588 14.4.4 EJB中编程式安全 592 14.5 使用SSL建立安全连接 592 14.5.1 SSL基础知识 593 14.5.2 安装和配置SSL支持 593 14.5.3 在配置描述符中指定安全连接 595 14.6 本章小结 597 第15章 电子拍卖系统 598 15.1 系统功能简介和架构设计 599 15.1.1 系统功能简介 599 15.1.2 系统架构设计 599 15.2 持久层设计 600 15.2.1 系统实体 601 15.2.2 系统E-R图和数据表 601 15.2.3 实现JPA 实体 603 15.2.4 管理持久化单元 612 15.3 实现系统EAO层 614 15.3.1 实现EAO基类 615 15.3.2 实现系统EAO组件 618 15.4 实现业务逻辑层 622 15.4.1 定义业务逻辑组件接口 622 15.4.2 依赖注入EAO组件 624 15.4.3 业务逻辑组件中的异常处理 625 15.4.4 处理用户竞价 627 15.4.5 判断拍卖物品状态 631 15.4.6 事务管理 633 15.5 实现系统Web层 633 15.5.1 安装JSF 633 15.5.2 处理用户登录 634 15.5.3 图形验证码 639 15.5.4 登录控制 642 15.5.5 添加物品 643 15.5.6 处理用户竞价 650 15.6 使用SiteMesh页面装饰 656 15.6.1 在Web应用中安装SiteMesh 656 15.6.2 定义页面装饰 657 15.7 本章小结 659
以下是jar包列表 activation-1.1.jar activiti-engine-5.10.jar activiti-spring-5.10.jar antlr-2.7.7.jar aopalliance-1.0.jar aopalliance.jar asm-3.1.jar aspectjrt.jar aspectjweaver-1.6.12.jar aspectjweaver.jar c3p0-0.9.1.2.jar cas-client-core-3.2.1.jar cglib-2.2.jar cglib-nodep-2.1_3.jar classmate-0.5.4.jar commons-beanutils-1.8.0.jar commons-codec-1.4.jar commons-collections-3.2.1.jar commons-dbcp-1.4.jar commons-digester.jar commons-email-1.2.jar commons-fileupload-1.2.1.jar commons-lang-2.4.jar commons-logging-1.1.jar commons-pool-1.5.4.jar commons-pool-1.6.jar dom4j-1.6.1.jar ehcache-core-2.4.3.jar ezmorph-1.0.6.jar hibernate-commons-annotations-4.0.1.Final.jar hibernate-core-4.0.0.Final.jar hibernate-core-4.1.1.Final.jar hibernate-ehcache-4.0.0.Final.jar hibernate-entitymanager-4.0.0.Final.jar hibernate-jpa-2.0-api-1.0.1.Final.jar hibernate-validator-4.0.2.GA.jar httpclient-4.1.2.jar httpcore-4.1.2.jar jackson-core-asl-1.7.2.jar jackson-core-asl-1.9.9.jar jackson-jaxrs-1.7.2.jar jackson-jaxrs-1.9.9.jar jackson-mapper-asl-1.7.2.jar jackson-mapper-asl-1.9.9.jar jandex-1.0.3.Final.jar javassist-3.12.1.GA.jar javassist-3.15.0-GA.jar jaxb-api-2.1.jar jaxb-impl-2.1.3.jar jboss-logging-3.1.0.CR2.jar jboss-logging-3.1.0.GA.jar jboss-transaction-api_1.1_spec-1.0.0.Final.jar jcl-over-slf4j-1.5.8.jar json-lib-2.4-jdk15.jar jstl-1.1.2.jar livetribe-jsr223-2.0.6.jar log4j-1.2.16.jar mail-1.4.jar mybatis-3.1.1.jar mysql-connector-java-5.1.18-bin.jar mysql-connector-java-5.1.18.jar org.springframework.aop-3.1.1.RELEASE.jar org.springframework.asm-3.1.1.RELEASE.jar org.springframework.aspects-3.1.1.RELEASE.jar org.springframework.beans-3.1.1.RELEASE.jar org.springframework.context-3.1.1.RELEASE.jar org.springframework.context.support-3.1.1.RELEASE.jar org.springframework.core-3.1.1.RELEASE.jar org.springframework.expression-3.1.1.RELEASE.jar org.springframework.instrument-3.1.1.RELEASE.jar org.springframework.instrument.tomcat-3.1.1.RELEASE.jar org.springframework.jdbc-3.1.1.RELEASE.jar org.springframework.jms-3.1.1.RELEASE.jar org.springframework.orm-3.1.1.RELEASE.jar org.springframework.oxm-3.1.1.RELEASE.jar org.springframework.test-3.1.1.RELEASE.jar org.springframework.transaction-3.1.1.RELEASE.jar org.springframework.web-3.1.1.RELEASE.jar org.springframework.web.portlet-3.1.1.RELEASE.jar org.springframework.web.servlet-3.1.1.RELEASE.jar org.springframework.web.struts-3.1.1.RELEASE.jar slf4j-api-1.5.8.jar slf4j-log4j12-1.5.8.jar spring-aop-3.1.1.RELEASE.jar spring-asm-3.1.1.RELEASE.jar spring-beans-3.1.1.RELEASE.jar spring-context-3.1.1.RELEASE.jar spring-context-support-3.1.1.RELEASE.jar spring-core-3.1.1.RELEASE.jar spring-expression-3.1.1.RELEASE.jar spring-integration-core-2.1.1.RELEASE.jar spring-integration-http-2.1.1.RELEASE.jar spring-jdbc-3.1.1.RELEASE.jar spring-orm-3.1.1.RELEASE.jar spring-tx-3.1.1.RELEASE.jar spring-web-3.1.1.RELEASE.jar spring-webmvc-3.1.1.RELEASE.jar standard-1.1.2.jar stax-api-1.0-2.jar transaction-api-1.1.jar validation-api-1.0.0.GA.jar xmemcached-1.3.7.jar xml-apis-1.0.b2.jar
驱动器 D 中的卷没有标签。 卷的序列号是 0004-19C1 D:\spring 3.2.0+hibernate 4.1.6+struts2整合需要的jar包 的目录 2013/05/11 15:26 <DIR> . 2013/05/11 15:26 <DIR> .. 2013/03/21 18:20 445,288 antlr-2.7.7.jar 2013/03/21 18:20 4,467 aopalliance-1.0.jar 2013/03/21 18:20 43,578 asm-3.3.jar 2013/03/21 18:20 38,275 asm-commons-3.3.jar 2013/03/21 18:20 1,887,781 aspectjweaver-1.5.3.jar 2013/03/21 18:20 115,709 bonecp-0.7.1.RELEASE.jar 2013/03/21 18:20 282,338 cglib-2.1.3.jar 2013/03/21 18:20 121,757 commons-dbcp.jar 2013/03/21 18:20 59,590 commons-fileupload-1.2.2.jar 2013/03/21 18:20 159,509 commons-io-2.0.1.jar 2013/03/21 18:20 315,805 commons-lang3-3.1.jar 2013/03/21 18:20 60,686 commons-logging-1.1.1.jar 2013/03/21 18:20 42,492 commons-pool.jar 2013/03/21 18:20 313,898 dom4j-1.6.1.jar 2013/05/11 15:26 0 filesnames.txt 2013/03/21 18:20 931,168 freemarker-2.3.19.jar 2013/03/21 18:20 639,592 google-collections-1.0.jar 2013/03/21 18:20 1,795,936 guava-12.0.jar 2013/03/21 18:20 81,271 hibernate-commons-annotations-4.0.1.Final.jar 2013/03/21 18:20 4,451,544 hibernate-core-4.1.6.Final.jar 2013/03/21 18:20 478,440 hibernate-entitymanager-4.1.6.Final.jar 2013/03/21 18:20 391,378 hibernate-envers-4.1.6.Final.jar 2013/03/21 18:20 102,661 hibernate-jpa-2.0-api-1.0.1.Final.jar 2013/03/21 18:20 648,253 javassist-3.15.0-GA.jar 2013/03/21 18:20 60,768 jboss-logging-3.1.0.GA.jar 2013/03/21 18:20 11,209 jboss-transaction-api_1.1_spec-1.0.0.Final.jar 2013/03/21 18:20 802,721 mysql-connector-java-5.1.20-bin.jar 2013/03/21 18:20 227,807 ognl-3.0.5.jar 2013/03/21 18:20 1,977,267 ojdbc6.jar 2013/03/21 18:20 26,083 slf4j-api-1.7.2.jar 2013/03/21 18:20 334,628 spring-aop-3.2.0.RC2.jar 2013/03/21 18:20 69,796 spring-aspects-3.2.0.RC2.jar 2013/03/21 18:20 605,733 spring-beans-3.2.0.RC2.jar 2013/03/21 18:20 853,183 spring-context-3.2.0.RC2.jar 2013/03/21 18:20 126,740 spring-context-support-3.2.0.RC2.jar 2013/03/21 18:20 863,315 spring-core-3.2.0.RC2.jar 2013/03/21 18:20 193,557 spring-expression-3.2.0.RC2.jar 2013/03/21 18:20 400,914 spring-jdbc-3.2.0.RC2.jar 2013/03/21 18:20 391,926 spring-orm-3.2.0.RC2.jar 2013/03/21 18:20 240,414 spring-tx-3.2.0.RC2.jar 2013/03/21 18:20 622,166 spring-web-3.2.0.RC2.jar 2013/03/24 17:46 794,039 struts2-core-2.3.7.jar 2013/03/21 18:20 21,810 struts2-spring-plugin-2.3.4.1.jar 2013/03/21 18:20 636,751 xwork-core-2.3.7.jar 44 个文件 22,672,243 字节 2 个目录 81,522,536,448 可用字节

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值