開發表音映射的實體
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());
???????}
???}
?
}