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)

 

那就可以了。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值