1.在jboss的部署目录新增mysql-ds.xml,这个文件在jboss安装目录可以找到
MySqlDS
jdbc:mysql://127.0.0.1:3306/student
com.mysql.jdbc.Driver
root
123456
org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
mySQL
2.在EJB项目中新增JPA支持
这个操作一般让程序帮我们自动建立就ok,如下所示
还有一个问题需要注意就是上面的java版本,这个一般和java_home的版本一致
到这一步我们要在eclipse里创建数据源
接下来我们选择hibernate为jpa规范,之后eclipse会为我们自动配置jpa的配置文件,配置结束后文件可能是这样的
org.lxh.model.MUser
遗憾的是把项目部署到jboss会出现错误,因为jboss数据源已经配置好但是jpa配置文件没有使用jboss的数据源,且没有配置事务处理器,可以参考下面的配置 <?xml version="1.0" encoding="UTF-8"?>
java:MySqlDS
org.lxh.model.MUser
jta-data-source结点配置的就是jboss数据源的jndi,properties里配置jpa的事务处理器
3接下来在相应的包里创建实体bean就ok了
在相应包上右击,从中可以选择创建实体bean,根据提示实体Bean就能创建成功
package org.lxh.model;
import java.io.Serializable;
import javax.persistence.*;
/**
* The persistent class for the m_user database table.
*
*/
@Entity
@Table(name="m_user")
@NamedQuery(name="MUser.findAll", query="SELECT m FROM MUser m")
public class MUser implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private int id;
private String address;
private String name;
private String password;
public MUser() {
}
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public String getAddress() {
return this.address;
}
public void setAddress(String address) {
this.address = address;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
}
4.在EJB业务Bean里取得EntityManager
这个和依赖注入的原理基本类似,我们注入ejb可以使用@EJB注解,那么EntityManager的注入也是类似的
@PersistenceContext(unitName="TestTransaction")
private EntityManager em;
public void updateUser() throws Exception {
MUser m=em.find(MUser.class, 3);
m.setName("刘惜君XX");
em.merge(m);
}
上面的前两句代码就实现了EntityManager的注入那后面就可以进行相关操作了。要明白的一点的就是jpa操作数据库不需要显式的开启事务提交事务