开发环境:JBoss 4.2.2.GA,MyEclipse 6.01 ,MySQL5。
在MySQL中建立一个叫mydb的数据库,新建一个user表,SQL如下:
create table user(
id int not null,
name varchar(45) not null,
password varchar(20) not null,
primary key(id)
);
在JBoss的server/defaul/\deploy下新建mysql-ds.xml,
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>MySQLDS</jndi-name>
<connection-url>jdbc:mysql://127.0.0.1/mydb</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password></password>
</local-tx-datasource>
</datasources>
先建立一个EJB Project myejb,点选JavaEE 5.0 - EJB3.0,选中Add Support for Entity beans(add JPA Capabilities),确定即可。新建三个java文件,都在com.lukecheng包,分别如下:
/**
对应数据库user表
*/
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class User implements Serializable {
private int id;
private String name;
private String password;
@Id
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;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import com.lukecheng.entity.User;
@Stateless
public class UserService implements UserServiceRemote {
@PersistenceContext(unitName = "myejbPS")
private EntityManager em;
public void addUser(User u) { //持久化User
em.persist(u);
}
public User findUserById(int id) { //查找User
return (User) em.find(User.class, id);
}
}
import javax.ejb.Remote;
import com.lukecheng.entity.User;
@Remote
public interface UserServiceRemote {
public void addUser(User u);
public User findUserById(int id);
}
然后修改META-INF下的persistence.xml如下:
<?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="myejbPS" transaction-type="JTA">
<jta-data-source>java:/MySQLDS</jta-data-source><!-- 这是mysql-ds.xml配置好的数据源-->
</persistence-unit>
</persistence>
发布到JBoss,新建一个叫testejb的Dynamic Web Project测试一下 ,新建testuser.jsp:
<%@ page language="java"
import="javax.naming.*,com.lukecheng.*"
pageEncoding="GB2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<%
InitialContext ctx = null;
try {
ctx = new InitialContext();
UserServiceRemote h = (UserServiceRemote) ctx
.lookup("UserService/remote");
User u = new User();
u.setId(1);
u.setName("lukecheng");
u.setPassword("123456789");
h.addUser(u);
out.println("save over");
} catch (NamingException e) {
e.printStackTrace();
}
%>
</body>
</html>
启动Jboss,在浏览器中输入http://localhost:8080/testejb/testuser.jsp,看一下数据库,是不是有:
+----+-----------+-----------+
| id | name | password |
+----+-----------+-----------+
| 1 | lukecheng | 123456789 |
+----+-----------+-----------+
1 row in set (0.03 sec)
那就可以了。
JBoss中JPA的实现
猜你喜欢
转载自kanxuexy.iteye.com/blog/1054604
今日推荐
周排行