- 浏览: 405225 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (325)
- 数据中台 (15)
- 设计模式 (7)
- 数据结构 (4)
- JavaScript (51)
- 网页设计与制作 (7)
- Flex (4)
- Fckeditor (7)
- Struts (12)
- Spring (19)
- Hibernate (14)
- EJB3.0 (19)
- Java EE 6 (2)
- JSP (22)
- 辅助框架 (9)
- WebService (1)
- XML (8)
- 正则表达式 (5)
- 并发(多线程) (2)
- Java网络 (10)
- 开发工具 (25)
- Oracle (15)
- MySQL (8)
- Git (4)
- SQL Server (2)
- C# (9)
- php (14)
- asp (2)
- ColdFusion (5)
- Tex (1)
- 云游戏 (1)
最新评论
-
CSDNBenbenChong:
...
SQL里desc和asc是什么意思 -
雪狐一号:
非常好 顶一个
SQL里desc和asc是什么意思 -
boyleichinasoft:
thinking...
该如何去使用设计模式呢? -
nforce_com:
写的很好,学习了!不过Student 一般情况下不会删除所有 ...
JPA多对多 -
TaoistWar:
那是FCKEditor的,详细信息只能查看官方文档,或者直接看 ...
1.fckeditor-java-2.5给上传图片添加水印
(1):建表SQL语句(MySQL):
create table person ( id int primary key auto_increment, name varchar(20) not null );
注:表的数据源在6.配置JBoss数据源 中详细介绍了。此处直接拿来用
(2):配置xml文件:
EJB的实体Bean要求在jar包的META-INF中有persistence.xml文件,其作用:配置基本信息:
<?xml version="1.0" encoding="utf-8"?> <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="EJB" transaction-type="JTA"> <jta-data-source>java:EJBDS</jta-data-source> <properties> <property name="hibernate.hbm2ddl.auto" value="update"/> <!-- 显示最终执行的SQL语句 --> <property name="hibernate.show_sql" value="true"/> <!-- 格式化显示SQL --> <property name="hiberante.format_sql" value="true"/> </properties> </persistence-unit> </persistence> <!-- persistence-unit节点可以有一个或多个,每个persistence-unit节点定义了持久化内容名 称、使用的数据源及持久化产品专有属性。name 属性定义持久化名称。jta-data-source 节点指 定实体Bean使用的数据源JNDI 名称,如果应用发布在jboss下数据源名称必须带有java:/前缀,数 据源名称大小写敏感。properties节点用作指定持久化产品的各项属性,各个应用服务器使用的持久化 产品都不一样如Jboss使用Hibernate,weblogic10使用 Kodo,glassfish/sun application server/Oralce使用Toplink。 因为jboss 采用Hibernate,Hibernate 有一项属性hibernate.hbm2ddl.auto,该属 性指定实体Bean发布时是否同步数据库结构,如果hibernate.hbm2ddl.auto的值设为 create-drop,在实体Bean发布及卸载时将自动创建及删除相应数据库表(注意:Jboss 服务器启动 或关闭时也会引发实体Bean 的发布及卸载)。TopLink产品的toplink.ddl-generation属性 也起到同样的作用。 -->
(3):编写实体Bean
package com.taoist.ejb.bean; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="person") public class Person implements Serializable { private static final long serialVersionUID = 2708725489696416285L; @Id //标注为主键 @Column(name="id") @GeneratedValue(strategy=GenerationType.AUTO) // GenerationType.IDENTITY数据库自增加方式(适用于MySQL和MS SQL) // GenerationType.SEQUENCE数据库序列的方式(适用Oracle) // GenerationType.TABLE数据库表的方式(根据表中某一个字段进行累加) // GenerationType.AUTO则自动匹配(默认) private Integer id; @Column(name="name", length=20, nullable=false) private String name; public Person() { super(); } public Person(String name) { this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((id == null) ? 0 : id.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Person other = (Person) obj; if (id == null) { if (other.id != null) return false; } else if (!id.equals(other.id)) return false; return true; } }
(4):编写数据操作类:
写的时候没注意,写成了service,感觉应该类似SSH中的数据访问层的DAO.
package com.taoist.ejb.service; import java.util.List; import com.taoist.ejb.bean.Person; public interface PersonService { public void save(Person person); public void update(Person person); public void delete(int personId); public Person getById(int personId); public List<Person> getAll(); }
package com.taoist.ejb.service.impl; import java.util.List; import javax.ejb.Remote; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import com.taoist.ejb.bean.Person; import com.taoist.ejb.service.PersonService; @Stateless @Remote(PersonService.class) public class PersonServiceBean implements PersonService { @PersistenceContext(unitName="EJB") private EntityManager em; @Override public void delete(int personId) { em.remove(em.getReference(Person.class, personId));// 处于托管状态 } @SuppressWarnings("unchecked") @Override public List<Person> getAll() { return (List) em.createQuery("select t from Person t").getResultList(); } @Override public Person getById(int personId) { return em.find(Person.class, personId); } // EntityBean的四种状态: // 新建状态() // 托管状态(直接调用set方法就可以修改) // 游离状态() // 单体状态() @Override public void save(Person person) { em.persist(person); } @Override public void update(Person person) { em.merge(person);//前提Person实体Bean处于游离状态, } }
(5):测试类:
package test.ejb.service; import java.util.List; import javax.naming.InitialContext; import com.taoist.ejb.bean.Person; import com.taoist.ejb.service.PersonService; public class PersonServiceTest { private static PersonService ps; public static void main(String[] args) throws Exception { try { InitialContext ic = new InitialContext(); ps = (PersonService) ic.lookup("PersonServiceBean/remote"); } catch (Exception e) { System.out.println("init error!"); } // 添加 ps.save(new Person("taoist")); // 查找更新 /*Person person = ps.getById(1); person.setName("xxx"); ps.update(person);*/ // 删除 //ps.delete(1); List<Person> list = ps.getAll(); for (int i=0; i<list.size(); i++) { System.out.println(list.get(i).getName() + list.get(i).getId()); } } }
java.naming.factory.initial = org.jnp.interfaces.NamingContextFactory java.naming.provider.url = localhost:1099
(6):ant文件内容
<?xml version="1.0" encoding="utf-8"?> <!-- name:项目名称 basedir:用于计算所有其他路径的基路径。该属性可以被basedir property覆盖。 当覆盖时,该属性被忽略。如果属性和basedir property都没有设定,就使用 buildfile文件的父目录。 default:当没有指定target时使用的缺省target --> <project name="ejb" basedir="." default="deploy"> <!-- name:属性的名字 value:属性的值 --> <property name="build.dir" value="${basedir}\bin"/> <property environment="env"/> <!-- ${env.JBOSS_HOME}指向的是系统的环境变量:JBOSS_HOME 如果没有设置,可以直接使用绝对路径。如:D:\jboss-5.0.0.GA --> <property name="src.dir" value="${basedir}\ejbModule"/> <property name="jboss.home" value="${env.JBOSS_HOME}"/> <property name="jboss.server.config" value="default"/> <path id="build.classpath" description="类环境"> <fileset dir="${jboss.home}\client"> <include name="*.jar"/> </fileset> </path> <target name="prepare" description="初始化"> <delete dir="${build.dir}"/> <mkdir dir="${build.dir}"/> </target> <target name="compile" depends="prepare" description="编译"> <javac destdir="${build.dir}" srcdir="${src.dir}" includes="com/**" encoding="utf-8"> <classpath refid="build.classpath"/> </javac> </target> <target name="jar" depends="compile" description="打包"> <jar jarfile="${basedir}\${ant.project.name}.jar"> <fileset dir="${build.dir}"> <include name="**/*.class"/> </fileset> <metainf dir="${src.dir}\META-INF"/> </jar> </target> <target name="deploy" depends="jar" description="发布"> <copy file="${basedir}\${ant.project.name}.jar" tofile="${jboss.home}\server\${jboss.server.config}\deploy\${ant.project.name}.jar"/> </target> <target name="undeploy" description="卸裁"> <delete file="${jboss.home}\server\${jboss.server.config}\deploy\${ant.project.name}.jar"/> </target> <target name="clean" depends="undeploy" description="清理"> <delete file="${basedir}\${ant.project.name}.jar"/> <delete dir="${build.dir}"/> </target> </project>
注:数据源文件的内容:
<?xml version="1.0" encoding="UTF-8"?> <datasources> <local-tx-datasource> <jndi-name>EJBDS</jndi-name> <connection-url>jdbc:mysql://localhost:3306/ejb</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>root</user-name> <password>root</password> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter </exception-sorter-class-name> <max-pool-size>200</max-pool-size> <min-pool-size>10</min-pool-size> <metadata> <type-mapping>mySQL</type-mapping> </metadata> </local-tx-datasource> </datasources>
- TestEJB.zip (22.8 KB)
- 下载次数: 16
发表评论
-
8.EJB3的拦截器(外部类)
2010-05-11 11:00 1090EJB3的拦截器的开步骤: 1.开发拦截器 使用@A ... -
Caused by: org.hibernate.HibernateException: unknown Oracle major version [0]
2010-02-24 09:34 1786昨天试了一下把mysql的数据源配置mysql-ds.xml放 ... -
detached entity passed to persist
2010-02-02 08:01 1724detached entity passed to persi ... -
实体的状态
2009-06-17 23:04 603新建状态:新建的实体对象,尚未拥有持久化主键,没有和一个持久化 ... -
EJB3的一些常见注解
2009-06-17 22:58 9340.实体管理器 @Persisten ... -
JPA双向一对多和多对一
2009-06-16 01:03 4689JPA中一对多和多对一双向关系中,多的一方为关系维护端 ... -
JPA一对多和多对一关系
2009-05-16 11:18 60381-m:多的一方为关系维护端,关系维护端负责外键纪录 ... -
JPA多对多
2009-05-16 10:38 8497维护端注解 @ManyToMany (cascade ... -
JPA(HIberante)环境的搭建
2009-04-19 14:18 18931.添加jar包 hibernate & jpa j ... -
6.2 配置JBoss数据源(Oracle10G)
2009-03-17 10:38 16201.配置数据源 <?xml version=" ... -
6.1 配置JBoss数据源(MS SQL Server2005)
2009-03-17 09:35 17451.SQL Server 2005 配置内容: <?xm ... -
8.开发消息驱动Bean
2009-03-13 22:59 10491.配置消息服务 <?xml version=&qu ... -
6.配置JBoss数据源
2009-03-09 18:57 2392以MySQL为例: (1):添 ... -
5.开发有状态Bean
2009-03-05 23:37 8271.无状态Bean使用实例池技术管理Bean.性能 ... -
4.开发本地接口的无状态会话Bean
2009-03-05 23:03 816远程接口需要 ... -
3.通过ANT来提高应用的开发效率
2009-03-05 22:21 622<?xml version="1.0" ... -
2.开发EJB的客户端
2009-03-05 20:49 919EJB是业务层,通常被客户端调用,客户端可以是J ... -
1.EJB的HelloWorld!
2009-03-05 20:32 1732用Eclipse开发EJB需要用到EJB的类库 ...
相关推荐
7. **JNDI查找**:在Web应用中,我们需要通过JNDI查找来获取实体Bean的引用。在EJB部署描述符中,Bean会被注册到JNDI上下文中,Web应用通过这个上下文找到并实例化Bean。 8. **事务管理**:由于涉及数据库操作,EJB...
实体Bean(Entity Bean)是EJB的一种类型,它代表业务逻辑中的持久化对象,通常映射到数据库中的表。本篇文章将深入探讨EJB实体Bean的概念、其在Eclipse集成开发环境中的使用,以及与MySQL数据库的集成。 ### 一、...
为了创建一个对应于该数据表的实体Bean,首先需要定义Bean类、接口文件等组件。 - **Bean类定义**:对于CMP类型的实体Bean,Bean类是一个实现了`EntityBean`接口的抽象类。其中包含了一些默认的方法(如`...
本资源包包含了会话Bean、实体Bean和消息Bean的源代码,这三种类型的Bean是EJB 3.0的核心组成部分。 1. **会话Bean (Session Beans)** - **无状态会话Bean (Stateless Session Beans)**: 提供无持久性状态的业务...
- **会话Bean**、**实体Bean**和**消息驱动Bean**:EJB定义了三种类型的Bean,分别处理不同的业务需求,如短暂交互、持久化数据和异步通信。 6. **Java Bean 的局限性** - **过于简单**:Java Bean的设计相对基础...
实体Bean继承是Java企业级应用开发中的一个重要概念,特别是在使用Java持久化技术(JPA)进行数据存储时。实体Bean代表数据库中的一个表,而实体Bean之间的继承关系则需要在数据库层面进行适当的映射,以便正确地...
在IT行业中,开发单表映射的实体Bean是Java EE应用程序开发中的常见任务,尤其是在使用ORM(对象关系映射)框架如Hibernate或MyBatis时。这个过程涉及到将数据库中的单个表结构转换为Java类,以便在业务逻辑中方便地...
本教程聚焦于EJB 3,特别是第10讲,主要讲解如何开发单表映射的实体Bean。在本篇详细解答中,我们将深入探讨EJB 3中的实体Bean及其与数据库单表映射的关系。 首先,实体Bean是EJB的一种类型,代表业务逻辑中的持久...
本篇文章将深入探讨在JBoss应用服务器上开发EJB应用,特别是实体Bean的使用。 标题:“Jboss下开发ejb应用之一实体bean的应用” 首先,理解EJB实体Bean的含义至关重要。实体Bean代表持久化的业务对象,它们与...
EJB3.0的一个单表映射实体bean,实现对数据的增、删、改、查
2. **Container-managed Persistence (CMP)**:容器负责对象与数据库之间的持久化工作,开发者无需直接处理数据库操作,只需定义实体Bean的字段和属性。 3. **Entity Beans 3.0(EJB 3.0引入)**:简化了Entity Bean...
本工具专门针对这种情况,能够根据数据库中的表结构自动生成对应的Java Bean实体类,极大地提高了开发效率。 在使用这个逆向生成工具时,首先需要配置一个XML文件。这个XML文件包含了工具所需的参数,如数据库连接...
标题和描述中提到的"各种转换,xml,实体bean,动态bean,map等"涉及了Java编程语言中的一些核心概念,这些概念在企业级应用开发中非常常见。下面我们将详细探讨这些知识点。 1. **XML(Extensible Markup Language)*...
7. **配置Class类**:在实际操作中,将文件数据映射到Bean时,通常需要指定目标Bean的Class对象,以便知道如何构建实例和设置属性。这可以通过构造函数参数、静态方法参数或者配置文件来实现。 总的来说,从文件...
实体Bean是业务逻辑和数据存储之间的桥梁,它们可以映射到数据库表,其中“自动增长列”通常指的是主键,比如MySQL的`AUTO_INCREMENT`字段。在EJB中,实体Bean可以被声明为`@Entity`,并使用JPA(Java Persistence ...
`@Table`注解用来指定实体Bean所对应的数据库表,并且可以添加`UniqueConstraint`注释来设置表的唯一性约束。`@OneToMany`注解用于表示实体Bean之间的多对一或一对多关系,如学生和课程成绩的关系。这种关系在EJB ...