`
sillycat
  • 浏览: 2542086 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

EJB实例教程笔记(四)

    博客分类:
  • JAVA
阅读更多
EJB实例教程笔记(四)

电子书EJB3实例教程byLiHuoming.pdf笔记

第三章 实体Bean(Entity Bean)
在EJB的早期版本中,持久化是EJB平台的一部分。从EJB3.0开始,持久化已经自成规范,被称为Java Persistence API。

POJO通过Java Persistence元数据映射到数据库后,我们称entity bean。
创建一个Entity Bean对象相当于新建一条记录
删除一个Entity Bean会同时从数据库中删除对应记录
修改一个Entity Bean,容器会自动将Entity Bean的状态同步到数据库。

Java Persistence API还定义了一种查询语言(JPQL)。

3.1 JBOSS数据源的配置
取名格式为xxx-ds.xml
3.1.1 MySql数据源的配置
sample-ds.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>demoDS</jndi-name>
<connection-url>jdbc:mysql://localhost:3307/demo?useUnicode=true&amp;characterEncoding=GBK</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password></password>
<min-pool-size>1</min-pool-size>
<max-pool-size>4</max-pool-size>
<!--  抛出异常前最大的等待链接时间  -->
<blocking-timeout-millis>30000</blocking-timeout-millis>
            <!-- 关闭连接前链接空闲的最大时间 -->
<idel-timeout-minutes>5</idel-timeout-minutes>
            <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>

3.1.2 Ms Sql Server2000数据源的配置

3.1.3 Oracle9i数据源的配置

3.2 单表映射的实体Bean
JSP Engine                        --------->     EntityBeanTest.jsp

SessionBean EJB Container   --------->     PersonDAOBean.class

Java Persistence API           ---------->     Person.class(EJB annotated POJOs)

create database table:

CREATE TABLE `test`.`person` (
  `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(32) NOT NULL,
  `sex` TINYINT(1) UNSIGNED NOT NULL,
  `age` SMALLINT(6) UNSIGNED NOT NULL,
  `birthday` DATETIME,
  PRIMARY KEY (`id`)
)
ENGINE = InnoDB;

POJO annotation class Person.java:
package com.sillycat.ejb3.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name = "person")
public class Person implements Serializable
{
    private static final long serialVersionUID = 7290155616161659440L;
    private Integer           id;
    private String            name;
    private boolean           sex;
    private Short             age;
    private Date              birthday;
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    public Integer getId()
    {
        return id;
    }
    public void setId(Integer id)
    {
        this.id = id;
    }
    @Column(nullable=false,length=32)
    public String getName()
    {
        return name;
    }
    public void setName(String name)
    {
        this.name = name;
    }
    @Column(nullable=false)
    public boolean getSex()
    {
        return sex;
    }
    public void setSex(boolean sex)
    {
        this.sex = sex;
    }
    @Column(nullable=false)
    public Short getAge()
    {
        return age;
    }
    @Temporal(value=TemporalType.DATE)
    public void setAge(Short age)
    {
        this.age = age;
    }
    public Date getBirthday()
    {
        return birthday;
    }
    public void setBirthday(Date birthday)
    {
        this.birthday = birthday;
    }
}

实体Bean不直接与客户端打交道。而是被session bean或message-driven bean使用。
接口类PersonDAO.java:
package com.sillycat.ejb3.dao;
import java.util.List;
import com.sillycat.ejb3.model.Person;
public interface PersonDAO
{
    public void insert(Person person);
    public void updateName(String name,Integer id);
    public void update(Person person);
    public void delete(Integer id);
    public Person get(Integer id);
    public List<Person> getAll();
}
实现类PersonDAOBean.java:
package com.sillycat.ejb3.dao;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import com.sillycat.ejb3.model.Person;

public class PersonDAOBean implements PersonDAO
{
    @PersistenceContext(unitName = "demoTest")
    protected EntityManager em;
    public PersonDAOBean(EntityManager em)
    {
        this.em = em;
    }
    public void delete(Integer id)
    {
        Person person = em.find(Person.class, id);
        if (person != null)
        {
            em.remove(person);
        }
    }
    public Person get(Integer id)
    {
        return em.find(Person.class, id);
    }
    @SuppressWarnings("unchecked")
    public List<Person> getAll()
    {
        Query query = em.createQuery("select o from Person o order by o.id asc");
        return (List<Person>) query.getResultList();
    }
    public void insert(Person person)
    {
        em.persist(person);
    }
    public void update(Person person)
    {
        em.merge(person);
    }
    public void updateName(String name, Integer id)
    {
        Person person = em.find(Person.class, id);
        if (person != null)
        {
            person.setName(name);
        }
    }
}
JPA的配置文件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="demoTest" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/test" />
<property name="hibernate.connection.username" value="root" />
<property name="hibernate.connection.password" value="kaishi" />
<property name="hibernate.connection.autocommit" value="true"/>
</properties>
</persistence-unit>
</persistence>

如果发布给jboss使用,应该是persistence.xml:
<?xml version="1.0" ?>
<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="demoTest" transaction-type="JTA">
    <jta-data-source>java:/DefaultDemoTestDS</jta-data-source>
    <properties>
    <property name="hibernate.hbm2ddl.auto" value="update"/>
    <property name="hibernate.jdbc.fetch_size" value="18"/>
    <property name="hibernate.jdbc.batch_size" value="10" />
    <property name="hibernate.show_sql" value="true" />
    <property name="hibernate.format_sql" value="true" />
    </properties>
    </persistence-unit>
</persistence>
里面的DefaultDemoTestDS就是jboss下面配置的数据库链接的文件了。



分享到:
评论

相关推荐

    ejb培训笔记和源代码

    而`ejb.rar`可能包含了一些EJB实例代码,包括bean类、接口、部署描述符文件以及可能的测试用例。 通过学习这些资料,开发者不仅可以了解EJB的基本概念,还能掌握实际开发中如何创建、部署和管理EJB组件,从而提升在...

    JBoss下EJB3.0实例教程(黎活明)

    EE5实现规范 博文链接:https://aflyer.iteye.com/blog/141223

    EJB培训时候的笔记

    在【ejb笔记1.doc】和【ejb笔记2.doc】中,你可能会找到更多关于EJB的详细教程,包括如何配置EJB项目、编写Bean组件、调用EJB服务以及如何将它们集成到Java EE应用程序中的实例。这些笔记将深入探讨EJB的核心概念、...

    EJB学习资料

    里面是搜集的EJB学习资料,有《Jboss EJB3.0实例教程》和《EJB3.0实例教程》两本pdf书籍,以及两本外文pdf书籍及源码,分别为ejb-3_0-fr-spec-persistence.pdf和ejb-3_0-fr-spec-simplified.pdf,以及EJB课堂笔记....

    java EJB资料

    8. **EJB实例教程**: - 提供的教程如“EJB学习笔记.docx”、“精通EJB3.0.pdf”等,通常涵盖了EJB的基本概念、组件使用、部署配置以及最佳实践。 9. **源码分析**: - “EJB3.0实例教程(含源码).rar”提供了...

    java 核心技术教程笔记

    这份"java 核心技术教程笔记"的PDF文档,很可能是对以上这些内容的详细讲解和实例演示,对于学习和提升Java编程能力,特别是J2EE应用开发方面,将是一份宝贵的资源。通过深入学习并实践其中的知识点,你将能够熟练地...

    ejb3.0的讲义一起看

    "SD0711_EJB_Note_All"这个文件名可能指的是一个完整的EJB 3.0教程或笔记集合,它可能会涵盖EJB 3.0的所有主要概念、API使用、实战案例和最佳实践。通过深入学习这个资料,你可以全面了解EJB 3.0,掌握企业级应用...

    ejb教材

    在EJB_11185613这个文件中,很可能包含了关于EJB的详细教程,涵盖了上述的所有概念和技术。学习这个教材,你将了解如何设计和实现EJB组件,如何在J2EE环境中部署和使用它们,以及如何利用EJB来构建高可用、高性能的...

    黑马java教程知识点笔记整理

    【Java编程基础】 ...以上是黑马Java教程知识点笔记的主要内容,涵盖了Java编程的基础到进阶知识,是学习和巩固Java技能的重要参考资料。通过深入理解和实践这些知识点,开发者可以逐步提升Java编程能力。

    EJB资料,包括代码,课件,例子

    这些资料可能包括教程、讲座笔记、演示文稿或视频课程,旨在帮助学习者快速入门并逐步提升技能。 “查找例子分析学习的好教材”意味着这些资源不仅提供了基础知识,还鼓励学习者通过分析和修改现有的代码示例来提高...

    《Java高手真经:Java Web高级开发技术》读书笔记模板.pptx

    该资源为Java开发者提供了一个系统的Java Web高级开发技术教程,从Java高手真经(高级编程卷):Java Web高级开发技术读书笔记模板开始,到Java Web企业级开发技术EJB,最后到Java Web高级开发技术 frameworks与开源...

    北京圣思园java课堂笔记 (javaSE和javaee)

    此文件可能包含PPT课件、PDF教程、源代码示例或者更多笔记,旨在帮助学习者了解和实践javaEE的相关技术。 知识点详细说明: 1. **JavaSE**:JavaSE是Java的基础,它提供了编写各种类型应用程序所需的类库,如基本...

    JavaEE学习笔记.pdf

    "JavaEE学习笔记.pdf" JavaEE(Java Enterprise Edition)是Java平台的企业版,用于开发大型...JavaEE学习笔记.pdf提供了JavaEE的基础知识、技术栈、开发工具、应用场景、学习资源、面试常见问题和应用实例等内容。

    JAVA学习笔记(完整版)

    这份详尽的教程以清晰易懂的PDF文档形式呈现,旨在帮助新手快速掌握JAVA编程语言的核心概念和实用技巧。 在JAVA学习过程中,首先会接触到的是基础语法,包括变量、数据类型、运算符以及控制流程。JAVA支持基本的...

    魔乐java培训课堂笔记.7z

    13. **Java EE**:如果深入学习,Java EE(企业级应用)涵盖了Web开发、数据库连接(JDBC)、Servlet、JSP、EJB等技术,为构建大型分布式系统提供支持。 这些笔记将详细解析以上知识点,帮助读者逐步掌握Java编程,...

    凯达Java学习笔记.rar

    这可能是一个文档或笔记的集合,由Cernet(中国教育和科研计算机网)的成员或与之相关的个人或组织创建,内容可能包含了对上述技术的详细解释、实例代码、学习心得等。 综合以上信息,这个压缩包是一个全面的Java...

    java基础学习笔记 java整合技术 java工具类.zip

    在这一部分,你可能会找到关于如何定义类、创建对象以及如何通过方法实现功能的实例。此外,异常处理、集合框架(如ArrayList、LinkedList和HashMap)以及IO流也是基础学习的重要组成部分。 其次,Java整合技术可能...

    良葛格的java学习笔记

    【Java学习笔记】是专为初学者设计的一套详尽教程,旨在引领新手步入Java编程的广阔天地。这个资源包,名为"Java学習筆記",包含了丰富的学习材料,帮助初学者逐步掌握Java语言的基础知识和核心概念。 首先,Java是...

    j2ee体系chm帮助文档大全

    2. **J2EE全实例教程**:J2EE(Java 2 Platform, Enterprise Edition)是Java平台上的企业级应用开发标准,包括Servlet、JSP、EJB等组件。全实例教程可能包含了实际项目中的应用场景,让你通过实践理解各个组件的...

    《IT学习资料2》-Java 学习笔记.zip

    - `javaee` 文件夹可能包含Java企业版的相关教程,涵盖了Servlet、JSP、JavaMail、EJB、JMS、JNDI、JPA、Spring框架、Hibernate等企业级应用开发技术。 4. **Web前端资源**: - `index.html` 和 `README.md` 可能...

Global site tag (gtag.js) - Google Analytics