JPA2 on JBoss6

刚刚接触JPA2,写了个测试程序和大家分享。

环境:

server:JBoss6-M3

db:mysql

 

1.创建数据库 jpa , 建表 user:

CREATE TABLE `user` (
  `userid` int(11) NOT NULL auto_increment,
  `usercode` varchar(255) default NULL,
  `username` varchar(255) default NULL,
  `password` varchar(255) default NULL,
  `email` varchar(255) default NULL,
  `remark` varchar(255) default NULL,
  PRIMARY KEY  (`userid`)
) TYPE=MyISAM;


2.配置资源文件 mysql-ds.xml 放到 jboss deploy 目录下(比如 D:\server\jboss6m3\server\default\deploy )

<?xml version="1.0" encoding="UTF-8"?>

<datasources>
   <local-tx-datasource>
      <jndi-name>jpa2 </jndi-name>
      <connection-url>jdbc:mysql://localhost:3306/jpa </connection-url>
      <driver-class>com.mysql.jdbc.Driver</driver-class>
      <user-name>root</user-name>
      <password>123456WSad!</password>
      <min-pool-size>5</min-pool-size>
      <max-pool-size>100</max-pool-size>
      <idle-timeout-minutes>15</idle-timeout-minutes>
      <check-valid-connection-sql>select count(*) from user</check-valid-connection-sql>
      <track-statements/>
   </local-tx-datasource>
</datasources>


3.配置 jpa2 的persistence文件 persistence.xml,该文件应放到 src/META-INF下,否则请使用ant,maven等工具编译到classes/META-INF下。

<?xml version="1.0" encoding="UTF-8"?>
<persistence version=" 2.0 " 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_2_0.xsd ">
   
  <persistence-unit name=" JPA2 " transaction-type="JTA">
    <jta-data-source> java:jpa2 </jta-data-source>
    <properties/>
  </persistence-unit>
</persistence>

 

properties

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/> 正向工程时会用到:创建数据库和相关表

 

4.使用JPA2的工具,或者手动创建 User.java
package com.pojo;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

@Entity
@Table(name = " user ")
@NamedQueries( {
@NamedQuery(name = "User.findAll", query = "SELECT u FROM User u"),
@NamedQuery(name = "User.findByUserid", query = "SELECT u FROM User u WHERE u.userid = :userid"),
@NamedQuery(name = "User.findByUsercode", query = "SELECT u FROM User u WHERE u.usercode = :usercode"),
@NamedQuery(name = "User.findByUsername", query = "SELECT u FROM User u WHERE u.username = :username"),
@NamedQuery(name = "User.findByPassword", query = "SELECT u FROM User u WHERE u.password = :password"),
@NamedQuery(name = "User.findByEmail", query = "SELECT u FROM User u WHERE u.email = :email"),
@NamedQuery(name = "User.findByRemark", query = "SELECT u FROM User u WHERE u.remark = :remark") })
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "userid")
private Integer userid;
@Column(name = "usercode")
private String usercode;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@Column(name = "email")
private String email;
@Column(name = "remark")
private String remark;

public User() {
}

public User(Integer userid) {
this.userid = userid;
}

public Integer getUserid() {
return userid;
}

public void setUserid(Integer userid) {
this.userid = userid;
}

public String getUsercode() {
return usercode;
}

public void setUsercode(String usercode) {
this.usercode = usercode;
}

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;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getRemark() {
return remark;
}

public void setRemark(String remark) {
this.remark = remark;
}

@Override
public int hashCode() {
int hash = 0;
hash += (userid != null ? userid.hashCode() : 0);
return hash;
}

@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are
// not set
if (!(object instanceof User)) {
return false;
}
User other = (User) object;
if ((this.userid == null && other.userid != null)
|| (this.userid != null && !this.userid.equals(other.userid))) {
return false;
}
return true;
}

@Override
public String toString() {
return "com.pojo.User[userid=" + userid + "]";
}
}

5.创建访问数据库的session bean
package com.ejb;

import com.pojo.User;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

@Stateless
public class Userdao {

@PersistenceContext(unitName = " JPA2 ")
private EntityManager em;

public void save(User entity) {
this.em.persist(entity);
}

public void delete(User entity) {
try {
em.remove(em.merge(entity));

} catch (Exception e) {
String s = e.getMessage();
System.out.print(s);
}
}

public void update(User entity) {
em.merge(entity);
}

public List<User> getAll() {
Query query = em.createNamedQuery("User.findAll");
return query.getResultList();
}

public User getById(int id) {
return (User) em.createNamedQuery("User.findByUserid").getSingleResult();
}

public User getByUserCode(String usercode) {
Query query = em.createNamedQuery("User.findByUsercode");
query.setParameter("usercode", usercode);
try {
Object o = query.getSingleResult();
return (User) o;
} catch (Exception e) {// if result more than one, it will throw
// exception.
String s = e.getMessage();
System.out.print(s);
}
return null;
}

public User getByUserName(String username) {
Query query = em.createNamedQuery("User.findByUsername");
query.setParameter("username", username);
return (User) query.getSingleResult();
}
}

6.创建测试使用的servlet
package com.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.ejb.Userdao;
import com.pojo.User;

@WebServlet(name = " TestServlet ", urlPatterns = { "/TestServlet" })
public class TestServlet extends HttpServlet {

     @EJB
    private Userdao userDao;

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String msg = "";
        String para = request.getParameter("method");

        msg = "method=" + para + " :\n";

        if (para.equals("insert")) {
            String username = request.getParameter("username");
            String usercode = request.getParameter("usercode");
            String password = request.getParameter("password");
            String email = request.getParameter("email");
            User user = new User();
            user.setUsercode(usercode);
            user.setUsername(username);
            user.setPassword(password);
            user.setEmail(email);
            this.userDao.save(user);
            msg += "successful insert :" + username;
        } else if (para.equals("update")) {
            String username = request.getParameter("username");
            String usercode = request.getParameter("usercode");
            String password = request.getParameter("password");
            String email = request.getParameter("email");
            User user = this.userDao.getByUserCode(usercode);
            user.setUsercode(usercode);
            user.setUsername(username);
            user.setPassword(password);
            user.setEmail(email);
            this.userDao.update(user);

            msg += "successful update :" + username;
        } else if (para.equals("delete")) {
            String usercode = request.getParameter("usercode");
            User user = this.userDao.getByUserCode(usercode);
            if (user != null) {
                this.userDao.delete(user);
            }
            msg += "successful remove :" + user.getUsername();
        } else if (para.equals("findall")) {

            List<User> list = this.userDao.getAll();
            for (User user : list) {
                msg += "—>" + user.getUsername();
            }
        }

        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {

            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet TestServlet</title>");
            out.println("</head>");
            out.println("<body>");
            out.println(msg);
            out.println("</body>");
            out.println("</html>");

        } finally {
            out.close();
        }
    }

     @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String mothed = request.getParameter("method");
        if (mothed.equals("insert")) {
            processRequest(request, response);

        }
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }
}

7最后写一个测试用的 jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <a href="http://localhost:8080/eboss/ TestServlet ? method=insert & usercode=zhangshan & username=zhangsan & password=1234 & email=zhangshan@gmail.com ">
            insert test
        </a>
        <br/>
        <a href="http://localhost:8080/eboss/TestServlet?method=update&usercode=zhangshan&username=lisi&password=4321&email=lisi@gmail.com">
            update test
        </a>
        <br/>
        <a href="http://localhost:8080/eboss/TestServlet?method=findall">
            list test
        </a>
        <br/>
        <a href="http://localhost:8080/eboss/TestServlet?method=delete&usercode=zhangshan">
            delete test
        </a>
    </body>
</html>




8. 别忘了把 db driver jar 放入 jboss lib 目录(比如 D:\server\jboss6m3\server\default\lib ,driver jar: mysql-connector-java-5.1.6-bin.jar )

 

9. 运行JBoss 访问 http://localhost:8080/eboss/

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值