1. 实体关系
1.1 单向One-to-One (Customer 1-1 Address)
Public class Customer implements Serializable {
private Address homeAddress;
@OneToOne(cascade={CascadeType.ALL}) //cascade可以不写
@JoinColumn(name="ADRDRESS_ID") //JoinColumn可以不写
或者使用@PrimaryKeyJoinColumn来代替上一行
public Address getAddress() { return homeAddress; }
public void setAddress(Address address) { this.homeAddress = address; }
}
1.2 双向One-to-One (Customer 1-1 CreditCard)
Public class Customer implements Serializable {
private CreditCard creditCard;
@OneToOne(cascade={CascadeType.ALL}) //cascade可以不写
@JoinColumn(name="CREDIT_CARD_ID") //JoinColumn可以不写
public CreditCard getCreditCard() { return creditCard; }
public void setCreditCard(CreditCard creditCard) { this.creditCard = creditCard; }
}
Public class CreditCard implements Serializable {
private Customer customer;
@OneToOne(mappedBy="creditCard")
public Customer getCustomer() { return customer; }
public void setCustomer(Customer customer) { this.customer = customer; }
}
创建实例
Customer cust = new Customer();
CreditCard card = new CreditCard();
cust.setCreditCard(card);
card.setCustomer(cust);
em.persist(cust);
删除实例
Customer cust = em.find(Customer.class, id);
em.remove(cust.getCreditCard());
cust.setCreditCard(null);
1.3 单向One-to-Many (Customer 1-N Phone)
Public class Customer implements Serializable {
private Collection<Phone> phoneNumbers = new ArrayList<Phone>();
@OneToMany(cascade={CascadeType.ALL}) //cascade可以不写
@JoinColumn(name="CUSTOMER_ID") //JoinColumn可以不写
public Collection<Phone> getPhoneNumbers() {return phoneNumbers;}
public void setPhoneNumbers(Collection<Phone> phoneNumbers) {this.phoneNumbers = phoneNumbers;}
}
另外可以使用关系表映射
Public class Customer implements Serializable {
private Collection<Phone> phoneNumbers = new ArrayList<Phone>();
@OneToMany(cascade={CascadeType.ALL}) //cascade可以不写
@JoinTable(name="CUSTOMER_PHONE",
2.8 Native SQL
String sqlstr = "SELECT p.phone_PK, p.phone_number FROM Phone p";
em.createNativeQuery(sqlstr, Phone.class);
2.9 具名查询
预定义好EJB QL或者Native SQL
@NamedQueries(
@NamedQuery(name="getCustomer", query="SELECT c FROM Customer where c.firstName=?1"),
@NamedQuery(name="findCustomer", query="SELECT c FROM Customer")
)
em.createNamedQuery("getCustomer");
query.setParameter(1, "Charles");
3. 回调和监听器
3.1 回调
PrePersist, PostPersist, PostLoad, PreUpdate, PostUpdate, PreRemove, PostRemove
@PrePersist void beforeInsert() {}
定义一系列方法,可以在执行具体的操作之前或者之后,加入相应的方法
3.2 监听器
如果我们定义了一个Class方法,其中有很多PrePersist之类的方法,那么在执行Entity的时候,
我们可以注册成Listeners,以实现其中的调用方法,主要是拦截Entity生命周期的事件
@Entity
@EntityListeners({TitanAuditLogger.class, EntityJmxNotifier.class})
public class Cabin {}
在Cabin执行Persist操作时,相应TitanAuditLogger中的方法就会被调用
子类能继承基类的监听器,如果两者都定义,那么子类都会用到
4. Session Bean
4.1 两种调用方式
1. call-by-value: 远程接口,无论客户端是在同一JVM还是远程,EJB容器都对参数和返回值进行值拷贝
2. call-by-reference: 本地接口,不会值拷贝
分享到:
相关推荐
综上所述,Enterprise JavaBean 3.0 提供了一套全面的企业级应用开发框架,通过简化API、注解驱动和强大的服务支持,极大地提高了开发效率和代码可维护性。在EJB 3.0中,开发者可以更专注于业务逻辑,而非底层基础...
Enterprise JavaBean(EJB)3.0 是Java平台企业版(Java EE)中的核心组件,专为构建可扩展、安全且事务处理能力强大的分布式应用程序而设计。在EJB 3.0中,持久化(Persistence)是核心特性之一,它简化了对象与...
《企业级JavaBean3.0(EJB3.0)》是Java开发中不可或缺的重要组成部分,尤其对于构建大型、分布式的企业应用系统来说,EJB3.0提供了强大的服务和组件模型。这部分内容涵盖的是该书的前五章,以及完整的英文版第二...
### 企业级JavaBean 3.0:Bill Burke #### 一、企业级JavaBean (EJB) 3.0 概述 企业级JavaBean(EJB)3.0是Java平台的一部分,用于构建可扩展、健壮的企业级应用程序。EJB 3.0在前代版本的基础上进行了大量的改进...
综上所述,Enterprise JavaBeans 3.0带来了许多创新,如JPA、注解驱动的bean、会话bean和消息驱动bean,以及强大的事务和安全特性。这些特性使得EJB 3.0成为构建企业级Java应用的理想选择,尤其是对于需要处理大规模...
《企业JavaBeans 3.0 中文版》是Java企业级开发的重要参考资料,它详细介绍了EJB 3.0规范,这是一个里程碑式的版本,极大地简化了EJB的使用,提升了开发效率。本教程旨在帮助开发者深入理解和熟练运用EJB 3.0技术。 ...
Enterprise JavaBean基础
介绍 javaBean的 OReilly的书
### EJB (Enterprise JavaBean) 相关知识点详解 #### 一、EJB 概念与历史背景 EJB(Enterprise JavaBeans)是Java平台的一部分,用于开发和管理基于组件的企业级应用程序。它由Sun Microsystems在Java 2平台企业版...
标题中的“根据表结构自动生成JavaBean,史上最强最专业的表结构转JavaBean的工具(第5版)”指的是一个能够帮助开发者将数据库中的表结构自动转换为Java编程语言中的JavaBean对象的工具。这个工具的强大之处在于它...
Enterprise JavaBeans (EJB) 是Java平台上用于构建企业级分布式应用程序的一种核心技术。 CMP,全称为Container-Managed Persistence(容器管理持久化),是EJB的一个关键特性,它为开发者提供了数据库访问的简化...
### EJB (Enterprise JavaBean)概述 EJB (Enterprise JavaBean)是J2EE(Java 2 Platform, Enterprise Edition)框架的重要组成部分,它提供了一套用于构建可扩展、分布式的多层企业应用的标准。EJB的目标是通过抽象...
我们也想过很多办法解决这个问题,包括用MyEclipse连接数据库生成JavaBean,但多多少少还是会有一些不尽人意的地方,包括表和表字段的comment总是无法生成,而且还会生成很多无用的注释代码,让代码看起来一点都不...
EJB(Enterprise JavaBeans)是Java平台企业版(Java EE)的核心组成部分,主要用于构建可扩展、安全且可靠的分布式企业级应用。它提供了一种组件模型,让开发人员可以专注于业务逻辑,而无需关心底层的基础设施。 ...
JavaBean(Enterprise JavaBeans,EJB)3.0 是一种企业级应用开发的重要技术,尤其在Java平台上。EJB3.0的发布旨在解决EJB2.x版本中存在的复杂性问题,提升开发效率和生产力。本教程将聚焦于EJB3.0的改进,包括元...
从此,JavaBean就可以扩展为一个java web 应用的标准部件,并且JavaBean部件框架已经扩展为企业版的 Bean(EJB)。 JavaBean 和 Server Bean(通常称为 Enterprise JavaBean (EJB))有一些基本相同之处。它们都是...
**EJB3.0:企业级JavaBean 3.0详解** EJB(Enterprise JavaBeans)是Java EE(Java Platform, Enterprise Edition)平台的核心组成部分,主要用于构建可部署在服务器端的分布式应用程序。EJB3.0是其第三个主要版本...
JavaBean是一种特殊的Java类,它是Java编程语言中的一个核心概念,尤其在开发企业级应用程序时极为常见。JavaBean遵循特定的规范,使它们能够被其他Java应用或开发工具(如IDEs)识别、可视化和操作。JavaBean的主要...