持久化Bean与普通的JAVA Bean无异,区别在于它们用EJB的Annotation进行了标记。
- 持久化Bean有下列基本要求
- 一个实体类,并将其标识为@Entity
- 实体类必须要有主键,一般用@Id将其标识
- persistence.xml文件主要是定义实体的映射配置信息。
开发流程
1.配置JBOSS数据源
- copy数据库驱动到JBOSS_HOME/server/default/lib下。
- copy JBOSS_HOME/docs/examles/jca/mysql-ds.xml到JBOSS_HOME/server/default/deploy目录下,并修改数据库用户名及密码
- 在mysql中新建数据库
2.创建EJB项目,支持EntityBean
3.编写实体类,并注解映射规则
package com.roy.jpa.user;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.transaction.Synchronization;
@Entity
public class User implements Serializable {
@Id
@GeneratedValue
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
4.创建实体类对应的数据库表
- 在JBOSS应用服务器中jpa是由hibernate来作为底层的实现,因此我们可以在persitence.xml中配置与hibernante相关的数据
<pre name="code" class="html"><?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="jpa_01" transaction-type="JTA">
<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>
</persistence>
5.编写业务逻辑类,操作持久化数据
接口
package com.roy.jpa.user;
public interface UserManager {
public void addUser1(User user);
}
实现
package com.roy.jpa.user;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Stateless(name="UserManager")
@Remote
public class UserManagerImpl implements UserManager {
@PersistenceContext(unitName="")
private EntityManager em;
public void addUser2(User1 user) {
em.persist(user);
}
}
6.建立客户端,进行调用
package com.roy.jpa;
import javassist.CtClass;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.InitialContext;
import org.jboss.ejb3.MCKernelAbstraction.AlreadyInstantiated.Factory;
import com.roy.jpa.user.User;
import com.roy.jpa.user.User1;
import com.roy.jpa.user.UserManager;
import com.sun.xml.bind.CycleRecoverable.Context;
/**
* @author yiqing
*
*/
public class UserManagerClient {
/**
* @param args
* @throws JMSException
*/
public static void main(String[] args) throws Exception {
InitialContext ctx = new InitialContext();
UserManager userManager=(UserManager)ctx.lookup("UserManager/remote");
for(int i=0;i<5;i++){
User user=new User();
user.setUsername("user"+i);
userManager.addUser1(user);
}
}
}
实现效果:
会在ejb3数据库中生成数据表user,并插入数据。
总之这是一个持久化Bean开发的入门,从最基础的内容去操作怎样建立一个基本的实体映射。