EJB3 学习笔记六

开发表音映射的实体

Java持久化规范(JPA),即是实体bean通远元数据在javaBean和数据库之间建立映射关系,常见的hibernate  toplink   openjpa

在src目录下添加META-INF/persistence.xml文件,示例代码如下:

<?xmlversion="1.0"encoding="UTF-8"?>

<persistencexmlns="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-unitname="retacn"transaction-type="JTA">

              <!-- 使用oracle数据库 -->

              <jta-data-source>java:/OracleDS</jta-data-source>

              <properties>

                     <!-- 数据库方言 -->

                     <propertyname="hibernate.hbm2ddl.auto"value="update"/>

                     <propertyname="hibernate.format_sql"value="true"/>

                     <propertyname="hibernate.show_sql"value="true"/>

              </properties>

       </persistence-unit>

       <persistence-unitname="local"transaction-type="JTA">

              <!-- 使用mysql数据库 -->

              <jta-data-source>java:/MySqlDS</jta-data-source>

              <properties>

                     <!-- 数据库方言 -->

                     <propertyname="hibernate.hbm2ddl.auto"value="update"/>

                     <propertyname="hibernate.format_sql"value="true"/>

                     <propertyname="hibernate.show_sql"value="true"/>

              </properties>

       </persistence-unit>

</persistence>

 

 

 

使用oracle数据库

/**

 * Copyright (C) 2016

 *

 * FileName:User.java

 *

 * Author:<a href="mailto:zhenhuayue@sina.com">Retacn</a>

 *

 * CreateTime: 2016-7-22

 */

// Package Information

 

package cn.yue.ejb.entity;

 

import java.io.Serializable;

import java.util.Date;

 

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

importjavax.persistence.GenerationType;

import javax.persistence.Id;

importjavax.persistence.SequenceGenerator;

import javax.persistence.Table;

import javax.persistence.Temporal;

import javax.persistence.TemporalType;

 

/**

 * 用户 元数据的定义有两种方式: 1 xml的方式 2 注解的方式

 *

 * @version

 * @Description:

 * @author <ahref="mailto:zhenhuayue@sina.com">Retacn</a>

 * @since 2016-7-22

 */

@Entity

@Table(name = "t_user")

public class User implementsSerializable {

 

 

   private static final long serialVersionUID = 1L;

   // @GeneratedValue表示主键的取值方式,这里采用序列的方式

   @Id

   @GeneratedValue(strategy = GenerationType.SEQUENCE, generator ="mseq")

   @SequenceGenerator(name = "mseq", sequenceName ="user_sequences", allocationSize = 1)

   private long id;

   @Column(length = 32)

   private String user_name;

   @Column(length = 32)

   private String real_name;

   @Column(length = 6)

   private String user_age;

   @Column(length = 16)

   private String password;

   @Column(length = 21)

   private String phone;

   @Column

   @Temporal(TemporalType.DATE)

   private Date regtime;

   @Column(length = 32)

   private String device_id;

   @Column(length = 10)

   private String visible;

   @Column(length = 60)

   private String email;

   @Column(length = 32)

   private String reserve1;

   @Column(length = 32)

   private String reserve2;

   @Column(length = 32)

   private String reserve3;

   @Column(length = 32)

   private String reserve4;

   @Column(length = 32)

   private String reserve5;

 

   /**

    * 构造器

    */

   public User() {

   }

 

   public User(String user_name, String real_name, String password, Stringphone,

            String device_id, String visible,

            String email) {

       this.user_name = user_name;

       this.real_name = real_name;

       this.password = password;

       this.phone = phone;

       this.device_id = device_id;

       this.visible = visible;

       this.email = email;

       this.regtime = new Date();

 

   }

 

   public long getId() {

       return id;

   }

 

   public void setId(long id) {

       this.id = id;

   }

 

   public String getUser_name() {

       return user_name;

   }

 

   public void setUser_name(String user_name) {

       this.user_name = user_name;

   }

 

   public String getReal_name() {

       return real_name;

   }

 

   public void setReal_name(String real_name) {

       this.real_name = real_name;

   }

 

   public String getUser_age() {

       return user_age;

   }

 

   public void setUser_age(String user_age) {

       this.user_age = user_age;

   }

 

   public String getPassword() {

       return password;

   }

 

   public void setPassword(String password) {

       this.password = password;

   }

 

   public String getPhone() {

       return phone;

   }

 

   public void setPhone(String phone) {

       this.phone = phone;

   }

 

   public Date getRegtime() {

       return regtime;

   }

 

   public void setRegtime(Date regtime) {

       this.regtime = regtime;

   }

 

   public String getDevice_id() {

       return device_id;

   }

 

   public void setDevice_id(String device_id) {

       this.device_id = device_id;

   }

 

   public String getVisible() {

       return visible;

   }

 

   public void setVisible(String visible) {

       this.visible = visible;

   }

 

   public String getEmail() {

       return email;

   }

 

   public void setEmail(String email) {

       this.email = email;

   }

 

   public String getReserve1() {

       return reserve1;

   }

 

   public void setReserve1(String reserve1) {

       this.reserve1 = reserve1;

   }

 

   public String getReserve2() {

       return reserve2;

   }

 

   public void setReserve2(String reserve2) {

       this.reserve2 = reserve2;

   }

 

   public String getReserve3() {

       return reserve3;

   }

 

   public void setReserve3(String reserve3) {

       this.reserve3 = reserve3;

   }

 

   public String getReserve4() {

       return reserve4;

   }

 

   public void setReserve4(String reserve4) {

       this.reserve4 = reserve4;

   }

 

   public String getReserve5() {

       return reserve5;

   }

 

   public void setReserve5(String reserve5) {

       this.reserve5 = reserve5;

   }

 

   @Override

   public int hashCode() {

       final int prime = 31;

       int result = 1;

       result = prime * result + ((device_id == null) ? 0 :device_id.hashCode());

       result = prime * result + ((email == null) ? 0 : email.hashCode());

       result = prime * result + (int) (id ^ (id >>> 32));

       result = prime * result + ((password == null) ? 0 :password.hashCode());

       result = prime * result + ((phone == null) ? 0 : phone.hashCode());

       result = prime * result + ((real_name == null) ? 0 :real_name.hashCode());

       result = prime * result + ((regtime == null) ? 0 : regtime.hashCode());

       result = prime * result + ((reserve1 == null) ? 0 :reserve1.hashCode());

       result = prime * result + ((reserve2 == null) ? 0 :reserve2.hashCode());

       result = prime * result + ((reserve3 == null) ? 0 :reserve3.hashCode());

       result = prime * result + ((reserve4 == null) ? 0 :reserve4.hashCode());

       result = prime * result + ((reserve5 == null) ? 0 :reserve5.hashCode());

       result = prime * result + ((user_age == null) ? 0 :user_age.hashCode());

       result = prime * result + ((user_name == null) ? 0 :user_name.hashCode());

       result = prime * result + ((visible == null) ? 0 : visible.hashCode());

       return result;

   }

 

   @Override

   public boolean equals(Object obj) {

       if (this == obj)

            return true;

       if (obj == null)

            return false;

       if (getClass() != obj.getClass())

            return false;

       User other = (User) obj;

       if (device_id == null) {

            if (other.device_id != null)

                return false;

       } else if (!device_id.equals(other.device_id))

            return false;

       if (email == null) {

            if (other.email != null)

                return false;

       } else if (!email.equals(other.email))

            return false;

       if (id != other.id)

            return false;

       if (password == null) {

            if (other.password != null)

                return false;

       } else if (!password.equals(other.password))

            return false;

       if (phone == null) {

            if (other.phone != null)

                return false;

       } else if (!phone.equals(other.phone))

            return false;

       if (real_name == null) {

            if (other.real_name != null)

                return false;

       } else if (!real_name.equals(other.real_name))

            return false;

       if (regtime == null) {

            if (other.regtime != null)

                return false;

       } else if (!regtime.equals(other.regtime))

           return false;

       if (reserve1 == null) {

            if (other.reserve1 != null)

                return false;

       } else if (!reserve1.equals(other.reserve1))

            return false;

       if (reserve2 == null) {

            if (other.reserve2 != null)

                return false;

       } else if (!reserve2.equals(other.reserve2))

            return false;

       if (reserve3 == null) {

            if (other.reserve3 != null)

                return false;

       } else if (!reserve3.equals(other.reserve3))

            return false;

       if (reserve4 == null) {

            if (other.reserve4 != null)

                return false;

       } else if (!reserve4.equals(other.reserve4))

            return false;

       if (reserve5 == null) {

            if (other.reserve5 != null)

                return false;

       } else if (!reserve5.equals(other.reserve5))

            return false;

       if (user_age == null) {

            if (other.user_age != null)

                return false;

       } else if (!user_age.equals(other.user_age))

            return false;

       if (user_name == null) {

            if (other.user_name != null)

                return false;

       } else if (!user_name.equals(other.user_name))

            return false;

       if (visible == null) {

            if (other.visible != null)

                return false;

       } else if (!visible.equals(other.visible))

            return false;

       return true;

   }

 

   @Override

   public String toString() {

       return "User [id=" + id + ", user_name=" + user_name+ ", real_name=" + real_name

                + ", user_age=" +user_age + ", password=" + password + ", phone=" + phone

                + ", regtime=" +regtime + ", device_id=" + device_id + ", visible=" +visible

                + ", email=" + email+ ", reserve1=" + reserve1 + ", reserve2=" + reserve2

                + ", reserve3=" +reserve3 + ", reserve4=" + reserve4 + ", reserve5=" +reserve5

               + "]";

   }

 

}

/**

 * Copyright (C) 2016

 *

 * FileName:UserService.java

 *

 * Author:<ahref="mailto:zhenhuayue@sina.com">Retacn</a>

 *

 * CreateTime: 2016-7-22

 */

// Package Information

 

package cn.yue.ejb.service;

 

import java.util.List;

 

import cn.yue.ejb.entity.User;

 

/**

 * 用户操作实体

 *

 * @version

 * @Description:

 * @author <ahref="mailto:zhenhuayue@sina.com">Retacn</a>

 * @since 2016-7-22

 */

public interface UserService {

   public void save(User user);

 

   public void delete(long id);

 

   public void update(User user);

 

   public User getById(long id);

 

   public User getReferencesById(long id);

 

   public List<User> getAllUsers();

}

 

 

 

/**

 * Copyright (C) 2016

 *

 * FileName:UserServiceBean.java

 *

 * Author:<a href="mailto:zhenhuayue@sina.com">Retacn</a>

 *

 * CreateTime: 2016-7-22

 */

// Package Information

 

package cn.yue.ejb.service.impl;

 

import java.util.List;

 

import javax.ejb.Remote;

import javax.ejb.Stateless;

importjavax.persistence.EntityManager;

import javax.persistence.PersistenceContext;

 

import cn.yue.ejb.entity.User;

import cn.yue.ejb.service.UserService;

 

/**

 * 用户操作 ,此服务为无状态会话bean

 *

 * @version

 * @Description:

 * @author <ahref="mailto:zhenhuayue@sina.com">Retacn</a>

 * @since 2016-7-22

 */

@Stateless

@Remote(UserService.class)

public class UserServiceBeanimplements UserService {

 

   /**

    * 实体管理器unitName="" 指定持久化单元,使用oracle数据源, 如果只有一个持久化单元,该属性可以省略

    **/

   @PersistenceContext(unitName = "retacn")

   EntityManager em;

 

   /**

    * 保存用户

    */

   @Override

   public void save(User user) {

       // 新建状态变为托管状态

       em.persist(user);

   }

 

   /**

    * 删除用户

    */

   @Override

   public void delete(long id) {

       // 由托管状态变为销毁状态

       em.remove(getReferencesById(id));

   }

 

   /**

    * 更新用户

    */

   @Override

   public void update(User user) {

       // 由游离状态变为托管状态

       em.merge(user);

   }

 

   /**

    * 根据id查询用户

    */

   @Override

   public User getById(long id) {

       return em.find(User.class, id);

   }

 

   @Override

   public User getReferencesById(long id) {

       // 懒加载返回代理对象,只有在使用get方法获取数据时,对会加载对象

       return em.getReference(User.class, id);

   }

 

   /**

    * 查询所有用户

    */

   @SuppressWarnings("unchecked")

   @Override

   public List<User> getAllUsers() {

       // 使用jpql查询结果集

       return (List<User>) em.createQuery("select u from Useru").getResultList();

   }

 

}

 

修改build.xml文件

<copytodir="${build.dir}">

                     <filesetdir="${src.dir}">

                            <includename="META-INF"/>

                            <includename="META-INF/"/>

                            <includename="META-INF/**"/>

                            <includename="META-INF/***"/>

                     </fileset>

              </copy>

如果是编译的是jar文件,可以直接使用<metainf></metainf>

 

 

客户端测试代码如下:

/**

 * Copyright (C) 2016

 *

 * FileName:UserServiceTest.java

 *

 * Author:<ahref="mailto:zhenhuayue@sina.com">Retacn</a>

 *

 * CreateTime: 2016-7-22

 */

// Package Information

 

packagecn.yue.ejb.test;

 

importcn.yue.ejb.entity.User;

importcn.yue.ejb.service.UserService;

 

import org.junit.BeforeClass;

import org.junit.Test;

 

importjava.util.Hashtable;

import java.util.List;

 

importjavax.naming.Context;

importjavax.naming.InitialContext;

 

/**

 * 测试用户操作

 *

 * @version

 * @Description:

 * @author <ahref="mailto:zhenhuayue@sina.com">Retacn</a>

 * @since 2016-7-22

 */

public classUserServiceTest {

    private static UserService userService;

 

    @SuppressWarnings("unchecked")

    @BeforeClass

    public static void setUpBeforeClass()throws Exception {

        @SuppressWarnings("rawtypes")

        final Hashtable jndiProperties = newHashtable();

       jndiProperties.put(Context.URL_PKG_PREFIXES,"org.jboss.ejb.client.naming");

        final Context context = newInitialContext(jndiProperties);

 

        // 如果服务器布署的是.ear,appname.ear之后的包名,如果的war或是jar,appName可以为空

        final String appName = "";

        final String moduleName ="HelloWorldEJB";

        final String distinctName ="";

        final String beanName ="UserServiceBean";

        final String viewClassName = UserService.class.getName();

 

        final String namespace ="ejb:" + appName + "/" + moduleName + "/" +distinctName + "/"

                + beanName + "!" +viewClassName;

       System.out.println("namespace:" + namespace);

        userService = (UserService)context.lookup(namespace);

        System.out.println(userService);

    }

 

    @Test

    public void testSave() {

        userService.save(newUser("retacn", "岳振华", "123456", "1234567","3333", "T",

"loveyou.for.ever@163.com"));

    }

 

    @Test

    public void testDelete() {

        userService.delete(280);

    }

 

    @Test

    public void testUpdate() {

        User user = userService.getById(305);

        user.setReal_name("岳老三");

        userService.update(user);

    }

 

    @Test

    public void testGetById() {

        User user = userService.getById(305);

        System.out.println(user.toString());

    }

 

    @Test

    public void testGetReferencesById() {

    }

 

    @Test

    public void testGetAllUsers() {

        List<User> users =userService.getAllUsers();

        for (User user : users) {

           System.out.println(user.toString());

        }

    }

 

}

 

 

 

使用mysql数据库

 

/**

 * Copyright (C) 2016

 *

 * FileName:Buyer.java

 *

 * Author:<ahref="mailto:zhenhuayue@sina.com">Retacn</a>

 *

 * CreateTime: 2016-7-23

 */

// Package Information

 

package cn.yue.ejb.entity;

 

import java.io.Serializable;

import java.util.Date;

 

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.Id;

import javax.persistence.Table;

import javax.persistence.Temporal;

import javax.persistence.TemporalType;

 

/**

 * 购物者

 *

 * @version

 * @Description:

 * @author <ahref="mailto:zhenhuayue@sina.com">Retacn</a>

 * @since 2016-7-23

 */

@Entity

@Table(name = "buyer")

public class Buyer implementsSerializable {

   private static final long serialVersionUID = 1L;

 

   /** 用户名 **/

   @Id

   @Column(name = "userName")

   private String userName;

   /** 邮箱 **/

   @Column(length = 30)

   private String email;

   /** 性别 **/

   @Column(length = 5)

   private String gender;

   /** 密码 **/

   @Column(length = 32)

   private String password;

   /** 真实姓名 **/

   @Column(length = 30)

   private String realName;

   /** 注册时间 **/

   @Column(length = 30)

   @Temporal(TemporalType.TIMESTAMP)

   private Date regTime = new Date();

   /** 是否可用 **/

   @Column(length = 1)

   private boolean visible = true;

   /** 暂不使用 **/

   @Column(length = 11)

   private String contact_id;

 

   /**

    * 构造器

    */

   public Buyer() {

   }

 

   public Buyer(String userName,//

            String email,//

            String gender, //

            String password,//

            String realName) {

       this.userName = userName;

       this.email = email;

       this.gender = gender;

       this.password = password;

       this.realName = realName;

       this.regTime = new Date();

   }

 

   public String getUserName() {

       return userName;

   }

 

   public void setUserName(String userName) {

       this.userName = userName;

   }

 

   public String getEmail() {

       return email;

   }

 

   public void setEmail(String email) {

       this.email = email;

   }

 

   public String getGender() {

       return gender;

   }

 

   public void setGender(String gender) {

       this.gender = gender;

   }

 

   public String getPassword() {

       return password;

   }

 

   public void setPassword(String password) {

       this.password = password;

   }

 

   public String getRealName() {

       return realName;

   }

 

   public void setRealName(String realName) {

       this.realName = realName;

   }

 

   public Date getRegTime() {

       return regTime;

   }

 

   public void setRegTime(Date regTime) {

       this.regTime = regTime;

   }

 

   public boolean getVisible() {

       return visible;

   }

 

   public void setVisible(boolean visible) {

       this.visible = visible;

   }

 

   public String getContact_id() {

       return contact_id;

   }

 

   public void setContact_id(String contact_id) {

       this.contact_id = contact_id;

   }

 

   @Override

   public int hashCode() {

       final int prime = 31;

       int result = 1;

       result = prime * result + ((contact_id == null) ? 0 : contact_id.hashCode());

       result = prime * result + ((email == null) ? 0 : email.hashCode());

       result = prime * result + ((gender == null) ? 0 : gender.hashCode());

       result = prime * result + ((password == null) ? 0 : password.hashCode());

       result = prime * result + ((realName == null) ? 0 :realName.hashCode());

       result = prime * result + ((regTime == null) ? 0 : regTime.hashCode());

       result = prime * result + ((userName == null) ? 0 :userName.hashCode());

       result = prime * result + (visible ? 1231 : 1237);

       return result;

   }

 

   @Override

   public boolean equals(Object obj) {

       if (this == obj)

            return true;

       if (obj == null)

            return false;

       if (getClass() != obj.getClass())

            return false;

       Buyer other = (Buyer) obj;

       if (contact_id == null) {

            if (other.contact_id != null)

                return false;

       } else if (!contact_id.equals(other.contact_id))

            return false;

       if (email == null) {

            if (other.email != null)

                return false;

       } else if (!email.equals(other.email))

            return false;

       if (gender == null) {

            if (other.gender != null)

                return false;

       } else if (!gender.equals(other.gender))

            return false;

       if (password == null) {

            if (other.password != null)

                return false;

       } else if (!password.equals(other.password))

            return false;

       if (realName == null) {

            if (other.realName != null)

                return false;

       } else if (!realName.equals(other.realName))

           return false;

       if (regTime == null) {

            if (other.regTime != null)

                return false;

       } else if (!regTime.equals(other.regTime))

            return false;

       if (userName == null) {

            if (other.userName != null)

                return false;

       } else if (!userName.equals(other.userName))

            return false;

       if (visible != other.visible)

            return false;

       return true;

   }

 

   @Override

   public String toString() {

       return "Buyer [userName=" + userName + ", email=" +email + ", gender=" + gender

                + ", password=" +password + ", realName=" + realName + ", regTime=" +regTime

                + ", visible=" +visible + ", contact_id=" + contact_id + "]";

   }

 

}

 

 

/**

 * Copyright (C) 2016

 *

 * FileName:BuyerService.java

 *

 * Author:<ahref="mailto:zhenhuayue@sina.com">Retacn</a>

 *

 * CreateTime: 2016-7-23

 */

// Package Information

 

package cn.yue.ejb.service;

 

import cn.yue.ejb.entity.Buyer;

 

import java.util.List;

 

/**

 * 购物者操作接口

 *

 * @version

 * @Description:

 * @author <ahref="mailto:zhenhuayue@sina.com">Retacn</a>

 * @since 2016-7-23

 */

public interface BuyerService {

   /**

    * 保存购物者

    *

    * @param buyer

    */

   public void save(Buyer buyer);

 

   /**

    * 删除购物者

    *

    * @param name

    */

   public void delete(String name);

 

   /**

    * 更新购物者

    *

    * @param buyer

    */

   public void update(Buyer buyer);

 

   /**

    * 根据用户名查询购物者

    *

    * @param name

    * @return

    */

   public Buyer getById(String name);

 

   /**

    * 根据用户名查询购物者(懒加载)

    *

    * @param name

    * @return

    */

   public Buyer getReferencesById(String name);

 

   /**

    * 查询所有购物者

    *

    * @return

    */

   public List<Buyer> getAllBuyers();

}

 

 

 

/**

 * Copyright (C) 2016

 *

 * FileName:BuyerServiceBean.java

 *

 * Author:<ahref="mailto:zhenhuayue@sina.com">Retacn</a>

 *

 * CreateTime: 2016-7-23

 */

// Package Information

 

package cn.yue.ejb.service.impl;

 

import java.util.List;

 

import javax.ejb.Remote;

import javax.ejb.Stateless;

importjavax.persistence.EntityManager;

importjavax.persistence.PersistenceContext;

 

import cn.yue.ejb.entity.Buyer;

import cn.yue.ejb.service.BuyerService;

 

/**

 * 购物者操作接口实现类(无状态bean )

 *

 * @version

 * @Description:

 * @author <ahref="mailto:zhenhuayue@sina.com">Retacn</a>

 * @since 2016-7-23

 */

@Stateless

@Remote(BuyerService.class)

public class BuyerServiceBeanimplements BuyerService {

   /** 主入实体管理bean **/

   @PersistenceContext(unitName = "local")

   EntityManager em;

 

   @Override

   public void save(Buyer buyer) {

       em.persist(buyer);

   }

 

   @Override

   public void delete(String name) {

       em.remove(getReferencesById(name));

   }

 

   @Override

   public void update(Buyer buyer) {

       em.merge(buyer);

   }

 

   @Override

   public Buyer getById(String name) {

       return em.find(Buyer.class, name);

   }

 

   @Override

   public Buyer getReferencesById(String name) {

       return em.getReference(Buyer.class, name);

   }

 

   @SuppressWarnings("unchecked")

   @Override

   public List<Buyer> getAllBuyers() {

       return (List<Buyer>) em.createQuery("select b from Buyerb").getResultList();

   }

 

}

 

客户端测试代码如下:

/**

 * Copyright (C) 2016

 *

 * FileName:BuyerServiceTest.java

 *

 * Author:<ahref="mailto:zhenhuayue@sina.com">Retacn</a>

 *

 * CreateTime: 2016-7-23

 */

// Package Information

 

package cn.yue.ejb.test;

 

import cn.yue.ejb.entity.Buyer;

importcn.yue.ejb.service.BuyerService;

 

import org.junit.BeforeClass;

import org.junit.Test;

 

import java.util.Hashtable;

import java.util.List;

 

import javax.naming.Context;

import javax.naming.InitialContext;

 

/**

 * 购物者业务测试类

 *

 * @version

 * @Description:

 * @author <ahref="mailto:zhenhuayue@sina.com">Retacn</a>

 * @since 2016-7-23

 */

public class BuyerServiceTest {

   private static BuyerService buyerService;

 

   @SuppressWarnings("unchecked")

   @BeforeClass

   public static void setUpBeforeClass() throws Exception {

       @SuppressWarnings("rawtypes")

       final Hashtable jndiProperties = new Hashtable();

       jndiProperties.put(Context.URL_PKG_PREFIXES,"org.jboss.ejb.client.naming");

       final Context context = new InitialContext(jndiProperties);

 

       // 如果服务器布署的是.ear包,则appname为.ear之后的包名,如果的war或是jar包,appName可以为空

       final String appName = "";

       final String moduleName = "HelloWorldEJB";

       final String distinctName = "";

       final String beanName ="BuyerServiceBean";

       final String viewClassName = BuyerService.class.getName();

 

       final String namespace = "ejb:" + appName + "/" +moduleName + "/" + distinctName + "/"

                + beanName + "!" +viewClassName;

       System.out.println("namespace:" + namespace);

       buyerService = (BuyerService) context.lookup(namespace);

       System.out.println(buyerService);

   }

 

   @Test

   public void testSave() {

       buyerService.save(new Buyer("retacn1","loveyou.for.ever@163.com", "MAN", "123456","岳振华"));

   }

 

   @Test

   public void testDelete() {

       buyerService.delete("retacn1");

   }

 

   @Test

   public void testUpdate() {

       Buyer buyer = buyerService.getById("retacn1");

       buyer.setRealName("岳老三");

       buyerService.update(buyer);

   }

 

   @Test

   public void testGetById() {

       Buyer buyer = buyerService.getById("retacn1");

       System.out.println(buyer.toString());

   }

 

   @Test

   public void testGetReferencesById() {

 

   }

 

   @Test

   public void testGetAllBuyers() {

       List<Buyer> buyers = buyerService.getAllBuyers();

       for (Buyer buyer : buyers) {

           System.out.println(buyer.toString());

       }

   }

 

}

转载于:https://www.cnblogs.com/retacn-yue/p/6194212.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271073.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

栈出现的异常和设置栈的大小-Xss

异常 java.lang.StackOverflowError 看下面的例子&#xff0c;默认的栈内存 设置栈内存 使用参数-Xss大小来设置栈的大小

bmp 像素点 php,读取BMP图像每一像素点RGB数据 | 学步园

对于24位bmp图片&#xff0c;每一个像素点存放着此点的RGB值。首先定义一个结构体&#xff0c;包含红(red)、绿(green)、蓝(blue)这三个字段&#xff0c;如下&#xff1a;//像素颜色值typedef struct tagPOINT{BYTE b;BYTE g;BYTE r;} POINT;接下来定义用来存放每一像素点RGB值…

项目管理基础:系统评价相关知识

1、概念软件系统的评价分为广义评价和狭义评价。广义评价&#xff1a;主要是指系统从开发开始到结束的过程中&#xff0c;每个阶段都要进行系统评价。狭义评价&#xff1a;主要是指在系统建成后并投入运行之后进行全面、综合的评价。2、广义评价分类根据时间与软件系统所处的阶…

AutoHotKey程序防止反编译的简单手段

可以使用AutoHotKey自带的工具。 AutoHotKey安装完成后&#xff08;我使用的是1.1.0.0&#xff09;&#xff0c;找到安装所在目录下的文件&#xff1a;\Compiler\Ahk2Exe.exe。 程序界面如下&#xff1a; 简单使用&#xff1a; 1、选择源文件&#xff08;script file) 2、选择目…

table合并单元格_制作课程表3——合并单元格

由于浏览器兼容问题&#xff0c;、 以及 很少被使用&#xff0c;所以我们将课程表依然使用tr、td元素&#xff0c;结合样式实现出前面案例中效果原来代码&#xff1a;课程1 课程2 课程3 课程4 课程5 课程1 课程2 课程3 课程4 课程5 课程1 课程2 课程3 课程4 课程5 课程1 …

php join a.id b.id,mysql求助 请问where a.id=b.id 和join on a.id=b.id 在效率上的区别

下面是ecshop 的商品表和品牌表的查询&#xff0c;请问它们的查询效率有什么区别呢&#xff1f;还有一个问题是 left join 和join的效率哪个高一点呢。谢谢 &#xff01;&#xff01;SELECT a.goods_id , a.goods_name , b.brand_nameFROM ecs_goods AS aLEFT JOIN ecs_brand A…

数据库设计:数据库应用系统的生命周期

数据库应用系统的生命周期可以划分为&#xff1a;数据库规划、需求描述与分析、数据库与应用程序设计、数据库设计实现、数据库测试、数据库运维。1、数据库规划 数据库规划是创建数据库应用系统的第一步&#xff0c;也是数据库应用系统的任务描述和目标的明确。数据库规划的内…

从零开始,做一个NodeJS博客(四):服务器渲染页面与Pjax

标签&#xff1a; NodeJS 0 一个星期没更新了 一直在忙着重构代码&#xff0c;以及解决重构后出现的各种bug 现在CSS也有一点了&#xff0c;是时候把遇到的各种坑盘点一下了 1 听歌排行 API 修复与重构 1.1 修复 在加载云音乐听歌排行的时候&#xff0c;有时会出现一个奇怪的…

java 简单事件的使用,如何正确的使用Java事件通知(1)

如何正确的使用Java事件通知(1)通过实现观察者模式来提供 Java 事件通知(Java event notification)似乎不是件什么难事儿&#xff0c;但这过程中也很容易就掉进一些陷阱。本文介绍了我自己在各种情形下&#xff0c;不小心制造的一些常见错误。Java 事件通知让我们从一个最简单的…

Java 自动装箱与拆箱

Java 自动装箱与拆箱 装箱就是自动将基本数据类型转换为包装器类型&#xff08;int–>Integer&#xff09;&#xff1b;调用方法&#xff1a;Integer 的 valueOf(int) 方法 拆箱就是自动将包装器类型转换为基本数据类型&#xff08;Integer–>int&#xff09;。调用方法…

基本系统设备感叹号_win7系统网络图标显示感叹号的问题

有系统之家的小伙伴&#xff0c;在使用win764位纯净版系统上网的时候&#xff0c;出现网络图标显示感叹号的问题。这种问题我们可以通过在网络检测修复中进行自行检测。或者是检查一下是不是硬件设备的问题。详细解决步骤就来看下系统哥小编是怎么做的吧~win7 64系统无法上网显…

LVM逻辑卷,RAID磁盘阵列

磁盘管理&#xff1a; 有关硬盘的识别&#xff0c;linux根据设备类型对存储设备进行识别&#xff0c;如果是IDE设备&#xff0c; 在计算机中会被识别为hd&#xff0c;第一个IDE设备会被识别为hda&#xff0c;第二个IDE设备会被识别为hdb&#xff0c;依次类推。如果是SATA,USB,S…

硬件编程:STM32串口发送数据和接收数据方式总结!

串口发送数据1、串口发送数据最直接的方式就是标准调用库函数 。void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);第一个参数是发送的串口号&#xff0c;第二个参数是要发送的数据&#xff0c;但是用过的朋友应该觉得不好用&#xff0c;一次只能发送单个字符&#…

Java编程题修院子,了解java虚拟机—JVM相关参数设置(2)

1. JVM相关参数设置JVM相关配置-XX:PrintGC两次次YoungGC&#xff0c;两次FullGC。-XX:PrintGCDetails打印GC时的内存&#xff0c;并且在程序结束时打印堆内存使用情况-XX:PrintHeapAtGC每次GC时会分别打印回收前与回收后堆信息-XX:PrintGCTimeStamps选择打印GC的方式后&…

此异常最初是在此调用堆栈中引发的:_【8】进大厂必须掌握的面试题Java面试异常和线程...

点击上方“全栈程序员社区”&#xff0c;星标公众号重磅干货&#xff0c;第一时间送达Q1。错误和异常有什么区别&#xff1f;错误是在运行时发生的不可恢复的情况。如OutOfMemory错误。这些JVM错误无法在运行时修复。尽管可以在catch块中捕获错误&#xff0c;但是应用程序的执行…

高仿带感魔性病毒源码+成品(最近很火的)

高仿带感魔性病毒源码成品&#xff08;最近很火的&#xff09;娱乐使用。没破坏性 会改壁纸和打乱桌面图标顺序 自己改回来就好 演示地址&#xff1a; 下载地址&#xff1a;链接: http://pan.baidu.com/s/1dF2ZlU5 密码: m95p转载于:https://www.cnblogs.com/blogwy/p/5804711.…

数据库设计:数据库设计的基本步骤介绍

数据库设计主要包括用户需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施阶段、数据库运行和维护阶段等六个阶段。1、用户需求分析 数据库设计人员采用相应的辅助工具对应用对象的功能、性能、限制等要求进行科学实际的分析。2、概念结构设计 概念结构设计主要…

Hashcode 的作用

java 的集合有两类&#xff0c;一类是 List&#xff0c;还有一类是 Set。前者有序可重复&#xff0c;后者无序不重复。当我们在 set 中插入的时候怎么判断是否已经存在该元素呢&#xff0c;可以通过 equals 方法。但是如果元素太多&#xff0c;用这样的方法就会比较满。 于是有…

坎蒂雷赋权法 matlab,干货 | 利用MATLAB实现FMCW雷达中的常用角度估计方法

其中在介绍角度估计中&#xff0c;通过对接收差频信号在快慢时间维度的扩展&#xff0c;增加了空域的信息。扩展后的接收差频信号可以表示为其中k表示接收天线的个数&#xff0c;d为天线间距。在“干货|利用MATLAB实现FMCW雷达的角度估计”中&#xff0c;已经介绍了如何理解目标…

vscode 使用笔记

https://code.visualstudio.com/docs/setup/setup-overview#_proxy-server-support 如果使用代理上网时&#xff0c;需要配置&#xff1a; 在 settings.json 中这样设定&#xff1a; // 将设置放入此文件中以覆盖默认设置{"http.proxy": "http://用户名:密码IP:…