一 EJB服务端
1 整体结构
2 代码
PersonManager.java
public interface PersonManager {
public void addPerson(String name);
}
PersonManagerBean.java
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Stateless
@Remote
public class PersonManagerBean implements PersonManager {
@PersistenceContext(unitName = "test") // 注意 与 persistence.xml中persistence-unit的name相同
private EntityManager em;
public void addPerson(String name) {
Person p = new Person();
p.setId(10);
p.setName("张三");
em.persist(p);
}
}
@Entity 表示为一个实体
@Table表示该实体映射到数据库中表的名字
@Id主键
@Transient 数据库忽略该属性
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
@Entity
@Table(name="t_person")
public class Person implements Serializable{
private static final long serialVersionUID = -6384496304647032095L;
@Id
private int id;
@Transient
private String address;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence 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" version="1.0">
<persistence-unit name="test" transaction-type="JTA">
<jta-data-source>java:/MySqlDS</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
</persistence>
二 客户端
1 整体结构
2 代码
jndi.properties 文件, client 文件夹,ejbServer文件夹 参考前面博客
EjbClient.java
import javax.naming.InitialContext;
import javax.naming.NamingException;
import ebj.learning.PersonManager;
public class EjbClient {
public static void main(String[] args) throws NamingException {
InitialContext context = new InitialContext();
PersonManager ejb = (PersonManager)context.lookup("PersonManagerBean/remote");
ejb.addPerson("张三");
}
}
运行main方法进行测试
三 结果