JBoss中JPA的实现

开发环境: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)



那就可以了。

猜你喜欢

转载自kanxuexy.iteye.com/blog/1054604
今日推荐