`

EJB3 的持久化

    博客分类:
  • EJB3
阅读更多
EJB3的持久化机制与Hibernate很相似:
环境:
服务器:JBOSS5.0
数据库:MySQL5.0

1.建立数据源
首先在jboss-5.0.0.GA\server\default\deploy下,建立一个用于连接数据库的数据源。
建立一个XML文件,名字为:mysql-ds.xml,其内容如下:
<datasources>
  <local-tx-datasource>
    <jndi-name>MySqlDS</jndi-name>
    <connection-url>jdbc:mysql://localhost:3306/ejb3inaction</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>root</user-name>
    <password>200596</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>

当然不同的数据库,配置的方法不一样,具体可参考jboss-5.0.0.GA\docs\examples\jca下相应的XML文件。
必须把MYSQL的JDBC驱动复制到jboss-5.0.0.GA\server\default\lib下。
2.创建持久化单元
在src/META-INF目录下,创建一个XML文件persitence.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="mysqlpersistence">
    <jta-data-source>java:/MySqlDS</jta-data-source>
    <properties>
     <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
     <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>


3.建立一实体类:
package com.entity;
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="userinfo")
public class UserInfo implements Serializable {

	private static final long serialVersionUID = -3200018567382795556L;
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Integer userId;
	@Column(name="user_name",length=32)
	private String username;
	@Column(name = "password",nullable=false)
	private String password;
	
	public Integer getUserId() {
		return userId;
	}	
	public String getUsername() {
		return username;
	}
	public void setUserId(Integer userId) {
		this.userId = userId;
	}
	public void setUsername(String username) {
		this.username = username;
	}	
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}

注意关于@Column注解既可用于属性,也可用于字段。即可这样用:
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Integer getUserId() {
		return userId;
	}

但不能同时在字段上和属性上用此注解,即不能在
private Integer userId;
public Integer getUserId() {
		return userId;
	}

同时用。但可以不同的字段可以这样用,即如果UserId的注解用在getUserId()上,其它字段可用在字段上,但是实际起作用的属性的注解,即关于字段的注解将被忽略。

4.建立Session接口与Session Bean类
package com.dao;
import javax.ejb.Remote;
import com.entity.UserInfo;
@Remote
public interface IUserDao {
	UserInfo getUserInfo(int userId);
	void insertUser(UserInfo user);
}


package com.dao;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import com.entity.UserInfo;
@Stateless
public class UserDaoImp implements IUserDao{

	@PersistenceContext(unitName="mysqlpersistence") 
	EntityManager entityManager;
	public UserInfo getUserInfo(int userId) {
		UserInfo userInfo= entityManager.find(UserInfo.class, userId);
		return userInfo;
	}
	public void insertUser(UserInfo user) {
		entityManager.persist(user);
	}
}


5.将实体Bean与SessionBean,还有META-INF文件夹打包成一个jar文件,部署在            jboss-5.0.0.GA\server\default\deploy,基本上就可以了。
6.为了测试刚才的EJB 是否能进行持久化。

在src下建立一属性文件,用于JNDI的查找,文件名为:jndi.properties,内容如下:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost:1099

再建立一测试类EjbPersistenceTest.java,内容如下:
package test;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import com.dao.IUserDao;
import com.entity.UserInfo;

public class EjbPersistenceTest {

	public static void main(String[] args) throws NamingException {
		// TODO Auto-generated method stub
		Context initialContext = new InitialContext();
	IUserDao user = (IUserDao) initialContext.lookup("UserDaoImp/remote");
//先进行数据插入
		UserInfo userInfo = new UserInfo();
		userInfo.setUsername("javait");
		userInfo.setPassword("2008");
		user.insertUser(userInfo);
//再通过ID从数据库进行检索
		UserInfo userInfo = user.getUserInfo(1);
		System.out.println("username="+userInfo.getUsername());
	}
}

正常情况下,会输入username=javait,一个EJB的持久化过程就完成了。
分享到:
评论

相关推荐

    EJB3持久化

    【EJB3持久化】是Enterprise JavaBeans 3.0版本中的一个重要特性,它引入了更轻量级的持久化模型,旨在简化企业级应用程序的数据持久化操作。EJB3.0不再局限于传统的EJB2.1实体Bean,而是采用了POJO(Plain Old Java...

    EJB3持久化规范中文版

    ### EJB3持久化规范知识点解析 #### 一、实体 **1.1 实体类的要求** ##### 1.1.1 持久化字段和属性 在EJB3中,实体类用来表示持久化的对象,即可以被存储到数据库中的对象。实体类必须遵循以下规则: - **类本身*...

    J2EE 应用规范(内含EJB3持久化规范,EJB3核心规范,JAVAEE+5.0以及JMS1_1规范)

    在给定的压缩包文件中,我们可以找到几个关键的规范文档,包括EJB3持久化规范、EJB3核心规范、JAVAEE 5.0规范以及JMS 1.1规范。这些规范是J2EE开发中不可或缺的基础。 1. **EJB3持久化规范**:全称为Enterprise ...

    EJB3持久化开发手册.chm

    网上拿来的东西,做成一个文件分享给大家 但是你要拿1分出来,因为我不想灌水了

    ejb3-persistence.jar

    《ejb3-persistence.jar:Java企业级持久化框架详解》 在Java开发领域,ejb3-persistence.jar是一个至关重要的组件,它涉及到Java企业版(Java EE)中的企业级bean(EJB)3.0规范,特别是持久化(Persistence)部分...

    ejb3-persistence

    【ejb3-persistence】是Java企业版(Enterprise JavaBeans,EJB)3.0规范中的持久化模块,它是Java后端开发中的一个重要组件,主要处理数据库操作和对象关系映射(Object-Relational Mapping,ORM)。在Spring框架中...

    ejb3-persistence.jar hibernate-annotations.jar

    而`ejb3-persistence.jar`就是这个领域中的关键库文件,它包含了EJB3持久化规范的实现。 `ejb3-persistence.jar`包含了JPA(Java Persistence API)的实现,JPA是一个标准的API,它定义了如何在Java应用程序中管理...

    EJB规范中文简版(3本)

    EJB3持久化规范是Java Persistence API(JPA)的一部分,它提供了标准的方式来管理和操作数据库中的对象。JPA允许开发者使用对象关系映射(ORM)技术,将Java对象与数据库表进行映射,简化了数据访问。`@Entity`...

    EJB3.0持久化开发手册

    **EJB3.0持久化开发手册** EJB(Enterprise JavaBeans)3.0是Java企业版中的一个关键组件,它极大地简化了企业级应用程序的开发。EJB3.0引入了许多新特性,特别是持久化机制,使得数据库操作变得更加简单易用。本...

    ehcache-1.2.3 ejb3-persistence

    标题"ehcache-1.2.3 ejb3-persistence"指出这是一个关于ehcache的特定版本(1.2.3)与EJB3持久化相关的资源包。Ehcache是一个广泛使用的Java缓存系统,而EJB3(Enterprise JavaBeans 3.0)是Java EE平台的一部分,...

    EJB 规范学习文档

    EJB3持久化规范引入了ORM(对象关系映射)的概念,使得Java对象可以直接与数据库中的表进行交互,而无需编写大量的SQL代码。这个规范通过JPA(Java Persistence API)提供了一种标准的方式来管理对象的生命周期和...

    EJB3 JAVA持久化API

    《EJB3 JAVA持久化API》一书由Mike Keith和Merrick Schincariol共同撰写,深入探讨了Java Persistence API(JPA),这是Java平台中用于处理对象关系映射(ORM)的一种规范,旨在简化企业级Java应用中的数据访问与...

    ejb3.0技术规范(中文版)

    "EJB3持久化规范(简体中文版).pdf"主要涵盖了ejb3.0的持久化机制,"EJB3核心规范.pdf"深入解析了ejb3.0的核心概念和设计,"JMS1_1规范(简体中文版).pdf"介绍了JMS的基础知识,这对于理解ejb3.0中的消息驱动Bean至关...

    EJB 持久层设计

    EJB 3.x及更高版本引入了注解驱动的实体,简化了持久化过程,使得与JPA的集成更加无缝。 2. **Session Beans**:虽然不是直接的持久层组件,但它们通常与持久层交互,以执行业务逻辑。会话Bean可以调用实体Bean的...

    EJB3_JPA对象持久化文档

    ### EJB3_JPA对象持久化文档 #### JPA概述 **JPA**(Java Persistence API)是由Sun Microsystems推出的用于Java应用程序的数据持久化标准。它为开发者提供了一种灵活高效的方式来处理应用程序与底层数据存储之间...

    EJB 3.0 持久性 API

    在EJB 3.0之前,持久化主要依赖于XML配置文件(如Hibernate的hibernate.cfg.xml和实体的.hbm.xml文件)。然而,EJB 3.0引入了注解,如@Entity、@Table、@Column等,可以直接在Java类和字段上声明,减少了配置文件的...

    EJB javaEE5 JMS1.1 JSP2.1规范中文版

    1. **EJB持久化规范**,即EJB3持久化,是Java EE 5中的一个重大改进,引入了ORM(对象关系映射)的概念,使得开发者可以更加直观地管理和操作数据库中的数据。它通过注解(Annotations)简化了实体bean的定义,如`@...

    j2ee规范 中文版

    EJB持久化规范是J2EE中的重要组成部分,它定义了如何在数据库中存储和管理对象的状态,即对象持久化。EJB 3.0引入了一个更简单、更直观的持久化模型,通过注解的方式将对象映射到关系数据库,无需编写XML映射文件。...

    ejb3 带源码

    - **实体Bean(Entity Bean)**:代表数据库中的持久化对象,EJB3引入了JPA(Java Persistence API),使得实体Bean的定义更简洁,通过注解可以直接映射到数据库表。 - **会话Bean(Session Bean)**:处理业务...

Global site tag (gtag.js) - Google Analytics