人员登入4---EJB配置编写

这一篇博客将介绍前后台交互,ejb配置和数据查询,为实现用户登入做足准备。

 

首先我们来配置ejb。

 

1.在src目录下建立jboss-ejb-client.properties文件
内容为:
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=localhost
remote.connection.default.port = 4447
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
remote.connection.default.username=pal0415
remote.connection.default.password=Pal0000

 

2.在src目录下建立META-INF目录,META-INF里建立persistence.xml文件

 

内容为:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.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_1_0.xsd">
    <persistence-unit name="unit" transaction-type="JTA">
        <jta-data-source>java:/OracleDS</jta-data-source>
            <properties>
                   <property name="hibernate.show_sql" value="true"/>
                   <property name="hibernate.format_sql" value="true"/>
                   <property name="hibernate.hbm2ddl.auto" value="update"/>
                   <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
            </properties>
    </persistence-unit>
</persistence>
相关说明:
注意java:/OracleDS与我们配置的数据源相同

 

hibernate.hbm2ddl.auto参数的作用主要用于:自动创建|更新|验证数据库表结构。如果不是此方面的需求建议set value="none"。
create:
每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
create-drop :
每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
update:
最 常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。
validate :
每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

 

3.jboss-as-7.1.1.Final\bin\client里面的jboss-client.jar复制到lib里面

 

4.编写ejb
代码已经上传,代码有注释
其中包含ejb的调用
Manage.java,ManageBean.java,ManageBeanRemote三个是ejb类的编写

 

(1)首先我们建立实体映射:Manage类
package login;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="MANAGE")//对应表名
public class Manage implements Serializable{
    private static final long serialVersionUID = 1L;
    @Id @Column(name="ID",nullable=false)//列名---@id表示主键
    public String id;
    
    @Column(name="USERNAME",nullable=false)
    public String username;
    
    @Column(name="PASSWORD",nullable=false)
    public String password;
    
    @Column(name="NAME",nullable=true)
    public String name;
   //--------------省略了get和set方法 
}
(2)编写ejb接口类:ManageBeanRemote类
package login;
import java.util.List;
import javax.ejb.Remote;
@Remote
public interface ManageBeanRemote {
    //我们只用到一个方法,其他接口是提供学习
    public void save (Manage temp);//增加
    
    public void update (Manage temp);//更新
    
    public void delete (Integer id);//根据id进行删除
    
    public Manage getqualification(Integer id);//根据id获得对象
        
    public List<Manage> getqualification();//返回所有
    //登入用这个方法
    public List<Manage> getqualificationParts(String username,String password);//根据username和     password返回
}
(3)实现接口类:ManageBean类


代码为:

 

package login;
import java.util.List;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Stateless
@Remote(ManageBeanRemote.class)
public class ManageBean implements ManageBeanRemote {

    @PersistenceContext
     EntityManager em;//实体管理对象
    
    @Override
    public void save(Manage temp) {
        // 增加
        em.persist(temp);

    }

    @Override
    public void update(Manage temp) {
        // 更新
        em.merge(temp);

    }

    @Override
    public void delete(Integer id) {
        // 根据id删除
        
        em.remove(em.getReference(Manage.class, id));

    }

    @Override
    public Manage getqualification(Integer id) {
        // 根据主键id获取Manage对象
         return em.find(Manage.class, id);
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<Manage> getqualification() {
        // 获取所有对象---可进行查询,和sql有点相似
        //return em.createQuery("select o from Manage o where STUDENTID='" + studentid  + "'AND TESTID='" + testid  + "' order by o.testid desc").getResultList();
        return em.createQuery("select o from Manage o ").getResultList();
    }

    
    @SuppressWarnings("unchecked")
    @Override
    public List<Manage> getqualificationParts(String username,String password) {
        // 获取所有对象---可进行查询,和sql有点相似
        return em.createQuery("select o from Manage o where USERNAME='" + username  + "'AND PASSWORD='" + password  + "' ").getResultList();
        
    }
}
经过上面步骤,我们就完成了对表manage的ejb配置和编写。
posted @ 2015-05-26 16:59  techfox  阅读(212)  评论(0编辑  收藏  举报