- 浏览: 2501307 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
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 1624I am still keep notes my tech n ... -
Portainer 2020(4)Deploy Nginx and Others
2020-03-20 12:06 390Portainer 2020(4)Deploy Nginx a ... -
Private Registry 2020(1)No auth in registry Nginx AUTH for UI
2020-03-18 00:56 390Private Registry 2020(1)No auth ... -
Docker Compose 2020(1)Installation and Basic
2020-03-15 08:10 343Docker Compose 2020(1)Installat ... -
VPN Server 2020(2)Docker on CentOS in Ubuntu
2020-03-02 08:04 416VPN Server 2020(2)Docker on Cen ... -
Nginx Deal with OPTIONS in HTTP Protocol
2020-02-15 01:33 313Nginx Deal with OPTIONS in HTTP ... -
PDF to HTML 2020(1)pdftohtml Linux tool or PDFBox
2020-01-29 07:37 353PDF to HTML 2020(1)pdftohtml Li ... -
Elasticsearch Cluster 2019(2)Kibana Issue or Upgrade
2020-01-12 03:25 613Elasticsearch Cluster 2019(2)Ki ... -
Spark Streaming 2020(1)Investigation
2020-01-08 07:19 240Spark Streaming 2020(1)Investig ... -
Hadoop Docker 2019 Version 3.2.1
2019-12-10 07:39 262Hadoop Docker 2019 Version 3.2. ... -
MongoDB 2019(3)Security and Auth
2019-11-16 06:48 214MongoDB 2019(3)Security and Aut ... -
MongoDB 2019(1)Install 4.2.1 Single and Cluster
2019-11-11 05:07 265MongoDB 2019(1) Follow this ht ... -
Monitor Tool 2019(1)Monit Installation and Usage
2019-10-17 08:22 298Monitor Tool 2019(1)Monit Insta ... -
Ansible 2019(1)Introduction and Installation on Ubuntu and CentOS
2019-10-12 06:15 284Ansible 2019(1)Introduction and ... -
Timezone and Time on All Servers and Docker Containers
2019-10-10 11:18 304Timezone and Time on All Server ... -
Kafka Cluster 2019(6) 3 Nodes Cluster on CentOS7
2019-10-05 23:28 250Kafka Cluster 2019(6) 3 Nodes C ... -
K8S Helm(1)Understand YAML and Kubectl Pod and Deployment
2019-10-01 01:21 295K8S Helm(1)Understand YAML and ... -
Rancher and k8s 2019(5)Private Registry
2019-09-27 03:25 335Rancher and k8s 2019(5)Private ... -
Jenkins 2019 Cluster(1)Version 2.194
2019-09-12 02:53 418Jenkins 2019 Cluster(1)Version ... -
Redis Cluster 2019(3)Redis Cluster on CentOS
2019-08-17 04:07 345Redis Cluster 2019(3)Redis Clus ...
相关推荐
EJB实例教程黎活明EJB实例教程黎活明EJB实例教程黎活明EJB实例教程黎活明EJB实例教程黎活明EJB实例教程黎活明
EJB3实例教程EJB3实例教程EJB3实例教程EJB3实例教程EJB3实例教程EJB3实例教程EJB3实例教程EJB3实例教程
EJB 3.0实例教程.pdf EJB 3.0实例教程.pdf
EJB30实例教程EJB30实例教程EJB30实例教程EJB30实例教程
ejb3.0实例教程.pdfejb3.0实例教程.pdf
EJB全实例教程
EJB3.0实例教程 博文链接:https://brxonline.iteye.com/blog/153889
EJB3实例教程 是一个教程 EJB3实例教程 是一个教程 EJB3实例教程 是一个教程
ejb3.0实例教程 ejb3.0实例教程 ejb3.0实例教程 ejb3.0实例教程 ejb3.0实例教程
EJB 3.0 实例教程-随书源码,所有源码都在里面。简单易懂,深入浅出,欢迎下载
黎活明EJB3.0实例教程,及源代码,全套资源
EJB3.0实例教程,电子文档,图例很丰富的进行EJB3.0程序的开发
电子书-EJB3.0实例教程 不错的一本书,看看吧!
EJB实例教程,入门系列,简单好懂,方便初学人员
压缩包中包含:EJB3.0实例教程 JPA教程 实战EJB三本电子书,都是不错的学习资料。
EJB3实例教程 EJB3实例教程EJB3实例教程
中文最新EJB3.0实例教程 博文链接:https://yongzhao.iteye.com/blog/44254
这里有2本书,一本是实例教程,一本是英文的精通EJB3.0,想学EJB的就来下吧