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.pswp.cn/news/271073.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271073.shtml
英文地址,請注明出處:http://en.pswp.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:…