貌似最近EJB3.0很流行\自己也开始学了下,其实如果对spring、hibernate比较熟悉的话ejb3.0其实很简单
ejb3.0也有依赖注入、AOP事务管理及hibernate的延迟加载这些东西和spring、hibernate大致做法是一致的!
学习ejb3.0之前必须先理解如下:
1、什么是会话bean、什么是实体bean(bean不知道中文对应的字,写成豆有点别扭 ,呵呵文盲sessionBean、entityBean)
//插一句什么是消息驱动bean 其实这个实例中没有介绍,所以我也不说明了~
2、有状态bean和无状态bean的区别
开发环境及工具:
1、jdk1.5
2、jboss-4.2.3.GA(必须4.2.xx版本才支持ejb3.0啊)
3、MyEclipse 5.5.1 GA
4、mysql
我使用MyEclipse 5.5.1 GA 主要是工作中习惯了它,其它高版本还不太适应,高版本建立ejb3.0应该一样89不离10哈
如果只有EclipseJ2EE 版本的话就需要将jboos中的D:\jboss-4.2.3.GA\server\default\lib的jar文件加入到根目录,这个不做介绍了哈,本机没有jee版本
EJB都是通过容器来连接数据库的,程序通过JNDI来调用
在建立项目之前先进入jboss 目录:D:\jboss-4.2.3.GA\docs\examples\jca 找到mysql-ds.xml ,因为我使用的是mysql所以就要它另存为其它地方,如果是oracle或db2找相对应的就OK
然后修改下数据库连接及其它设置修改如下
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>demoDS</jndi-name>
<connection-url>jdbc:mysql://127.0.0.1:3306/demo</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>root</password>
<min-pool-size>3</min-pool-size>
<max-pool-size>10</max-pool-size>
<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>
以上数据库设置就好了,不需要写代码哦···简单的爽·················然后把修改后的配置文件复制到jboss目录:D:\jboss-4.2.3.GA\server\default\deploy下
启动jboss数据库连接就O了·
请记住<jndi-name>demoDS</jndi-name> 后面项目建立的时候需要用到
现在开始建立EJB3.0项目
内容如下:
<?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="demo" transaction-type="JTA">
<jta-data-source>java:demoDS</jta-data-source>
</persistence-unit>
</persistence>
transaction-type="JTA" 一定要是JTA事物啊,这个可是支持分布式事物的啊!
项目各种包的一个展示,对应有过开发项目的人来说应该是明白的我还是具体说明下
org.demo.jpa.dao dao层的接口
org.demo.jpa.dao.impl dao层的实现类
org.demo.model 这里指实体bean说简单点就是对应数据库的java bean对象(这样说有一点不对,它不是简单java bean,它属于ejb的bean)
org.demo.service 服务层的接口
org.demo.service.impl 服务层实现类
META-INF这个是JTA规范
首先数据库建立两张表,user表和book表,本打算介绍下懒加载的,但因为时间问题,这个以后在说了,暂时不介绍了,所以实际只用到了user表
我是反向工程,先建立表结构然后通过工具生成数据库javaBean模型
数据库代码:
-- Table "user" DDL
CREATE TABLE `user` (
`id` int(11) NOT NULL auto_increment,
`userName` varchar(10) NOT NULL,
`passWord` varchar(10) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `userName` (`userName`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Table "book" DDL
CREATE TABLE `book` (
`id` int(11) NOT NULL auto_increment,
`bookName` varchar(255) NOT NULL,
`user` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `user` (`user`),
CONSTRAINT `book_ibfk_1` FOREIGN KEY (`user`) R
数据库表建立好后,现在通过MyEclipse来自动生成代码
右上角--字打错了,改 :如果没有上面红线部分点击other可以找到