【EJB学习笔记】——实体Bean
来源:互联网 发布:pos机数据拦截 编辑:程序博客网 时间:2024/05/16 23:45
实体Bean跟普通的Java实体并无多大差异,在EJB中的实体Bean用@Entity注解定义。
实体Bean开发步骤如下:
JBoss配置
配置JBoss数据源
这里用的数据库为mysql
拷贝数据库驱动(mysql驱动)到JBoss的server\default\lib目录下
添加数据源配置文件
在JBoss的docs\examples\jca目录下有各种数据库的配置文件,这里把mysql-ds.xml拷贝到server\default\deploy目录下(JBoss启动时会自动扫描该目录下的配置文件),并配置如下:
<?xml version="1.0" encoding="UTF-8"?><datasources> <local-tx-datasource> <jndi-name>MySqlDS</jndi-name> <connection-url>jdbc:mysql://localhost:3306/ejb3</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>root</user-name> <password>123456</password> <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>
上述配置很容易理解,<jndi-name>
JNDI名称 ,<connection-url>
数据库名称,<user-name>
用户名,<password>
密码……
如果JBoss需要再添加数据库,则在<datasources></datasources>
中再添加一个<local-tx-datasource></local-tx-datasource>
配置即可。
创建含有实体Bean的EJB项目
建立支持JPA的EJB项目
EJB中的实体Bean是用JPA实现的,所以在new—EJB Project时,一定要在Configuration下点击Modify,在Project Facet下面选中JPA:
后面的默认即可,创建完成后,会在META-INF文件夹下生成一个persistence.xml配置文件,类似于Hibernate中的hibernate.cfg.xml
配置如下内容:
<persistence-unit name="ejb_entitybean"> <jta-data-source>java:/MySqlDS</jta-data-source> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> <property name="hibernate.hbm2ddl.auto" value="update" /> </properties> </persistence-unit>
上面的MySqlDS就是mysql-ds.xml中配置的jndi-name。
编写实体类User.java,注解映射规则:
import java.io.Serializable;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;@Entitypublic class User implements Serializable{ @Id @GeneratedValue private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
@Entity表名该类时一个实体Bean,@ID标记的是生成表后的主键。在Hibernate中,如果某些字段不做说明则默认不会映射到数据库,EJB的JPA刚好相反,一个实体的某些字段不需要定义,默认会映射到数据库中,如果某个字段标明了@Transient注解,则不会映射到数据库中。@GeneratedValue表示自增长ID生成策略,相当于Hibernate中的native主键生成策略。
部署该EJB项目后,可以在数据库中发现生成了user表,详情为:
操作实体Bean
创建一个无状态会话Bean
import javax.ejb.Remote;import javax.ejb.Stateless;import javax.persistence.EntityManager;import javax.persistence.PersistenceContext;@Stateless@Remotepublic class UserManagerBean implements UserManager{ @PersistenceContext private EntityManager entityManager; @Override public void addUser(String name){ User user=new User(); user.setName(name); entityManager.persist(user); }}
在会话Bean中,需要用@PersistenceContext来注入javax.persistence.EntityManager,EntityManager
客户端测试:
public class JPAClient { public static void main(String[] args){ InitialContext cxt; UserManager userManager; try { cxt = new InitialContext(); userManager=(UserManager)cxt.lookup("UserManagerBean/remote"); for(int i=0;i<5;i++){ userManager.addUser("Danny"+i); } } catch (NamingException e) { e.printStackTrace(); } }}
执行结果,数据被成功插入到user表中:
【 转载请注明出处——胡玉洋《【EJB学习笔记】——实体Bean》】
- 【EJB学习笔记】——实体Bean
- EJB 学习笔记之 -实体Bean
- EJB——实体Bean
- EJB—从EJB会话bean访问EJB实体bean
- EJB学习笔记——会话Bean
- EJB学习(四)——Enterprise Bean(企业Bean)和Entity Bean(实体Bean)
- EJB学习笔记——JMS和消息驱动Bean
- 【EJB学习笔记】——JMS和消息驱动Bean
- J2EE的十三个技术——EJB之实体Bean
- EJB---->实体bean
- EJB 实体Bean
- Ejb的实体bean
- EJB--实体Bean
- 【EJB学习笔记】——有状态的会话Bean和无状态的会话Bean
- EJB学习(三)—消息驱动Bean
- EJB3实体bean学习笔记
- EJB 自动生成实体BEAN
- EJB 学习笔记之 -会话Bean
- Image uImage与zImage的区别
- C/C++中volatile关键字详解
- SQL 使一个字段自加1
- Squid日志说明
- VirtualBox加载虚拟硬盘文件
- 【EJB学习笔记】——实体Bean
- 美国大学计算机专业
- do while 循环的执行逻辑
- Java添加事件监听的四种方法代码实例
- StringBuilder和StringBuffer的区别及用法
- OpenCV之视频读取与帧的提取、显示及保存
- linux库文件相关记录
- Android开发之内存管理
- ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)