- 浏览: 2542086 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
nation:
你好,在部署Mesos+Spark的运行环境时,出现一个现象, ...
Spark(4)Deal with Mesos -
sillycat:
AMAZON Relatedhttps://www.godad ...
AMAZON API Gateway(2)Client Side SSL with NGINX -
sillycat:
sudo usermod -aG docker ec2-use ...
Docker and VirtualBox(1)Set up Shared Disk for Virtual Box -
sillycat:
Every Half an Hour30 * * * * /u ...
Build Home NAS(3)Data Redundancy -
sillycat:
3 List the Cron Job I Have>c ...
Build Home NAS(3)Data Redundancy
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&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下面配置的数据库链接的文件了。
电子书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&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下面配置的数据库链接的文件了。
发表评论
-
Update Site will come soon
2021-06-02 04:10 1672I am still keep notes my tech n ... -
Portainer 2020(4)Deploy Nginx and Others
2020-03-20 12:06 422Portainer 2020(4)Deploy Nginx a ... -
Private Registry 2020(1)No auth in registry Nginx AUTH for UI
2020-03-18 00:56 428Private Registry 2020(1)No auth ... -
Docker Compose 2020(1)Installation and Basic
2020-03-15 08:10 364Docker Compose 2020(1)Installat ... -
VPN Server 2020(2)Docker on CentOS in Ubuntu
2020-03-02 08:04 444VPN Server 2020(2)Docker on Cen ... -
Nginx Deal with OPTIONS in HTTP Protocol
2020-02-15 01:33 346Nginx Deal with OPTIONS in HTTP ... -
PDF to HTML 2020(1)pdftohtml Linux tool or PDFBox
2020-01-29 07:37 399PDF to HTML 2020(1)pdftohtml Li ... -
Elasticsearch Cluster 2019(2)Kibana Issue or Upgrade
2020-01-12 03:25 710Elasticsearch Cluster 2019(2)Ki ... -
Spark Streaming 2020(1)Investigation
2020-01-08 07:19 291Spark Streaming 2020(1)Investig ... -
Hadoop Docker 2019 Version 3.2.1
2019-12-10 07:39 288Hadoop Docker 2019 Version 3.2. ... -
MongoDB 2019(3)Security and Auth
2019-11-16 06:48 236MongoDB 2019(3)Security and Aut ... -
MongoDB 2019(1)Install 4.2.1 Single and Cluster
2019-11-11 05:07 286MongoDB 2019(1) Follow this ht ... -
Monitor Tool 2019(1)Monit Installation and Usage
2019-10-17 08:22 320Monitor Tool 2019(1)Monit Insta ... -
Ansible 2019(1)Introduction and Installation on Ubuntu and CentOS
2019-10-12 06:15 305Ansible 2019(1)Introduction and ... -
Timezone and Time on All Servers and Docker Containers
2019-10-10 11:18 328Timezone and Time on All Server ... -
Kafka Cluster 2019(6) 3 Nodes Cluster on CentOS7
2019-10-05 23:28 273Kafka Cluster 2019(6) 3 Nodes C ... -
K8S Helm(1)Understand YAML and Kubectl Pod and Deployment
2019-10-01 01:21 316K8S Helm(1)Understand YAML and ... -
Rancher and k8s 2019(5)Private Registry
2019-09-27 03:25 352Rancher and k8s 2019(5)Private ... -
Jenkins 2019 Cluster(1)Version 2.194
2019-09-12 02:53 438Jenkins 2019 Cluster(1)Version ... -
Redis Cluster 2019(3)Redis Cluster on CentOS
2019-08-17 04:07 365Redis Cluster 2019(3)Redis Clus ...
相关推荐
而`ejb.rar`可能包含了一些EJB实例代码,包括bean类、接口、部署描述符文件以及可能的测试用例。 通过学习这些资料,开发者不仅可以了解EJB的基本概念,还能掌握实际开发中如何创建、部署和管理EJB组件,从而提升在...
EE5实现规范 博文链接:https://aflyer.iteye.com/blog/141223
在【ejb笔记1.doc】和【ejb笔记2.doc】中,你可能会找到更多关于EJB的详细教程,包括如何配置EJB项目、编写Bean组件、调用EJB服务以及如何将它们集成到Java EE应用程序中的实例。这些笔记将深入探讨EJB的核心概念、...
里面是搜集的EJB学习资料,有《Jboss EJB3.0实例教程》和《EJB3.0实例教程》两本pdf书籍,以及两本外文pdf书籍及源码,分别为ejb-3_0-fr-spec-persistence.pdf和ejb-3_0-fr-spec-simplified.pdf,以及EJB课堂笔记....
8. **EJB实例教程**: - 提供的教程如“EJB学习笔记.docx”、“精通EJB3.0.pdf”等,通常涵盖了EJB的基本概念、组件使用、部署配置以及最佳实践。 9. **源码分析**: - “EJB3.0实例教程(含源码).rar”提供了...
这份"java 核心技术教程笔记"的PDF文档,很可能是对以上这些内容的详细讲解和实例演示,对于学习和提升Java编程能力,特别是J2EE应用开发方面,将是一份宝贵的资源。通过深入学习并实践其中的知识点,你将能够熟练地...
"SD0711_EJB_Note_All"这个文件名可能指的是一个完整的EJB 3.0教程或笔记集合,它可能会涵盖EJB 3.0的所有主要概念、API使用、实战案例和最佳实践。通过深入学习这个资料,你可以全面了解EJB 3.0,掌握企业级应用...
在EJB_11185613这个文件中,很可能包含了关于EJB的详细教程,涵盖了上述的所有概念和技术。学习这个教材,你将了解如何设计和实现EJB组件,如何在J2EE环境中部署和使用它们,以及如何利用EJB来构建高可用、高性能的...
【Java编程基础】 ...以上是黑马Java教程知识点笔记的主要内容,涵盖了Java编程的基础到进阶知识,是学习和巩固Java技能的重要参考资料。通过深入理解和实践这些知识点,开发者可以逐步提升Java编程能力。
这些资料可能包括教程、讲座笔记、演示文稿或视频课程,旨在帮助学习者快速入门并逐步提升技能。 “查找例子分析学习的好教材”意味着这些资源不仅提供了基础知识,还鼓励学习者通过分析和修改现有的代码示例来提高...
该资源为Java开发者提供了一个系统的Java Web高级开发技术教程,从Java高手真经(高级编程卷):Java Web高级开发技术读书笔记模板开始,到Java Web企业级开发技术EJB,最后到Java Web高级开发技术 frameworks与开源...
此文件可能包含PPT课件、PDF教程、源代码示例或者更多笔记,旨在帮助学习者了解和实践javaEE的相关技术。 知识点详细说明: 1. **JavaSE**:JavaSE是Java的基础,它提供了编写各种类型应用程序所需的类库,如基本...
"JavaEE学习笔记.pdf" JavaEE(Java Enterprise Edition)是Java平台的企业版,用于开发大型...JavaEE学习笔记.pdf提供了JavaEE的基础知识、技术栈、开发工具、应用场景、学习资源、面试常见问题和应用实例等内容。
这份详尽的教程以清晰易懂的PDF文档形式呈现,旨在帮助新手快速掌握JAVA编程语言的核心概念和实用技巧。 在JAVA学习过程中,首先会接触到的是基础语法,包括变量、数据类型、运算符以及控制流程。JAVA支持基本的...
13. **Java EE**:如果深入学习,Java EE(企业级应用)涵盖了Web开发、数据库连接(JDBC)、Servlet、JSP、EJB等技术,为构建大型分布式系统提供支持。 这些笔记将详细解析以上知识点,帮助读者逐步掌握Java编程,...
这可能是一个文档或笔记的集合,由Cernet(中国教育和科研计算机网)的成员或与之相关的个人或组织创建,内容可能包含了对上述技术的详细解释、实例代码、学习心得等。 综合以上信息,这个压缩包是一个全面的Java...
在这一部分,你可能会找到关于如何定义类、创建对象以及如何通过方法实现功能的实例。此外,异常处理、集合框架(如ArrayList、LinkedList和HashMap)以及IO流也是基础学习的重要组成部分。 其次,Java整合技术可能...
【Java学习笔记】是专为初学者设计的一套详尽教程,旨在引领新手步入Java编程的广阔天地。这个资源包,名为"Java学習筆記",包含了丰富的学习材料,帮助初学者逐步掌握Java语言的基础知识和核心概念。 首先,Java是...
2. **J2EE全实例教程**:J2EE(Java 2 Platform, Enterprise Edition)是Java平台上的企业级应用开发标准,包括Servlet、JSP、EJB等组件。全实例教程可能包含了实际项目中的应用场景,让你通过实践理解各个组件的...
- `javaee` 文件夹可能包含Java企业版的相关教程,涵盖了Servlet、JSP、JavaMail、EJB、JMS、JNDI、JPA、Spring框架、Hibernate等企业级应用开发技术。 4. **Web前端资源**: - `index.html` 和 `README.md` 可能...