最近在看EJB3,找到了guide for EJB3 on JBoss,大概看了一下,觉得还不错,写个笔记做个记录。
实体之间的关系,用了好久,但有时用到还是要到网上再查一遍,干脆自己记录下来,免得麻烦。
1.one-to-one
这种关系属于单向关系,两个Entity在一边把关系明确就可以。在Customer Entity里面这样定义:
@OneToOne(cascade = {CascadeType.ALL})
@JoinColumn(name = "ADDRESS_ID")
public Address getAddress()
{
return address;
}
在实体的属性或者该属性的get方法前,加上上面的annonation就定义了这两个实体的one-to-one关系。cascade表示拥有所有的级联。当Customer被create后,如果有对于的Address,那么Address也会被create(CascadeType.PERSIST);当Customer被delete后,对应的Address也会被delete(CascadeType.REMOVE);当Customer被update时,对于的Address也会update(CascadeType.MERGE)。
2.one-to-many
这种关系是双向关联,即两个Entity两边都要声明关系。Order会对于多个LineItem,那么有如下定义:
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy="order")
public Collection<LineItem> getLineItems()
{
return lineItems;
}
其中fetch表示当Order被loaded以后,和它相关的Entity是否需要同时取出来(懒加载)。FetchType.EAGER表示同时取出来,如果想在需要的时候再取出则设置成FetchType.ALL。
mappedBy表示Order和LineItem之间的双向关系由LineItem Entity中的order属性管理。(个人认为即在LineItem中定义外键)
LineItem有如下定义:
@ManyToOne
@JoinColumn(name = "order_id")
public Order getOrder()
{
return order;
}
JoinColumn表示映射到表中的外键列名为order_id
3.many-to-many
many-to-many需要用到中间表,可以使用@JoinTable定义。在customer中有如下定义:
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE}, fetch = FetchType.EAGER, mappedBy="customers")
public Set<Flight> getFlights()
{
return flights;
}
在Flight中定义:
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE}, fetch = FetchType.EAGER)
@JoinTable(table = @Table(name = "flight_customer_table"),
joinColumns = {@JoinColumn(name = "FLIGHT_ID")},
inverseJoinColumns = {@JoinColumn(name = "CUSTOMER_ID")})
public Set<Customer> getCustomers()
{
return customers;
}
joinColumns为定义中间表外键
inverseJoinColumns定义被维护段的外键,即上面的Customer
分享到:
相关推荐
EJB3支持一对多(@OneToMany)、多对一(@ManyToOne)、一对一(@OneToOne)和多对多(@ManyToMany)的关系映射,通过注解来定义实体之间的关联。 9. **懒加载和即时加载** EJB3支持懒加载和即时加载策略,控制...
EJB3实体bean可以通过JPA(Java Persistence API)进行管理,JPA是Java标准提供的对象关系映射(ORM)框架,它可以将Java对象转换为数据库中的记录。 **集成GWT与EJB3的步骤可能包括:** 1. **设置环境**:确保你有...
EJB2.0的EntityBean部署在Weblogic
这个PDF文档,"EJB2.0 Entity bean",可能包含了关于如何设计、实现和使用EJB2.0实体Bean的详细教程和指南。 在Java 2企业版(J2EE)框架中,EJB(Enterprise JavaBeans)是服务器端的组件模型,主要分为三种类型:...
EJB 3是EJB规范的一个版本,引入了许多简化开发的特性,使得EJB更加易用,特别是对于对象关系映射(ORM)和依赖注入(DI)。 在这个源码包中,我们可能会找到以下关键组成部分: 1. **pom.xml**: Maven项目的配置...
EJB 2.0实体Bean(Entity Bean) 实体Bean代表了业务逻辑中的持久化数据对象,它们与数据库中的记录相对应。在EJB 2.0中,实体Bean分为两种类型:CMP(容器管理持久性)和BMP(Bean管理持久性)。 #### 1.1 容器...
2. **元数据批注**:EJB 3中大量使用了Java注解(Annotations),比如`@Entity`、`@Table`、`@Id`等,来替代XML部署描述符,简化了配置并提高了代码的可读性和可维护性。 3. **O/R Mapping**:EJB 3采用了类似...
- **注解驱动**:EJB3大量使用了Java注解,如@Entity、@Table、@Column、@PersistenceContext、@EJB等,减少了XML配置文件的使用,提高了开发效率。 - **容器管理的持久性(CMP)**:通过JPA实现,开发者只需关注...
EJB3中的EntityBean主要基于JPA(Java Persistence API),采用注解驱动的方式进行对象关系映射(ORM)。`@Entity`注解标记实体类,`@Table`定义映射的数据库表,`@Id`标识主键字段。此外,还有`@GeneratedValue`...
3. **依赖注入(Dependency Injection)**:EJB3支持JSR-330的依赖注入,通过`@Inject`或`@EJB`注解,可以方便地在组件之间注入依赖,减少了代码间的耦合。 4. **简化会话bean(Simplified Session Beans)**:EJB3...
**EJB 3.0 开发 Entity:深入理解与实践** EJB(Enterprise JavaBeans)是Java企业级应用开发的核心组件之一,它提供了一种标准的方式来实现业务逻辑,使得开发者可以专注于应用程序的核心功能,而无需关注底层基础...
6. **依赖注入(Dependency Injection,DI)**:EJB3支持JSR 330规范,可以使用`@Inject`注解进行依赖注入,这使得组件之间的关系更易于管理和维护。 7. **查询语言(Java Persistence Query Language,JPQL)**:...
EJB 3中最大的改进之一是注解的广泛应用,如@Entity、@Stateless、@PersistenceContext等,这些注解大大减少了XML配置文件的使用,简化了企业组件的开发。除了注解,EJB 3还引入了依赖注入的概念,使得组件间的耦合...
**ejb3进阶案例详解** ejb3(Enterprise JavaBeans 3.0)是Java EE平台中的核心组件之一,它极大地简化了企业级应用程序的开发。ejb3引入了许多新特性和改进,使得开发人员可以更加高效地构建可扩展、可维护的企业...
EJB3引入了丰富的注解,如`@Stateless`、`@Stateful`、`@Entity`、`@Table`等,使得开发者可以直接在类或方法上定义组件的行为和属性,减少了XML配置文件的使用。 ### 4. JPA与ORM Java Persistence API(JPA)是...
EJB(Enterprise JavaBeans)是Java企业级应用开发的核心组件之一,主要用于构建分布式、事务处理和安全性较高的企业级应用程序。EJB实体Bean是EJB的一种类型,它代表了数据库中的持久化对象,允许开发者在Java代码...
- JPA(Java Persistence API):EJB3集成了JPA,提供了统一的对象/关系映射框架,简化了数据库访问。 3. **EJB3的类型** - **无状态会话bean(@Stateless)**:这类bean不保留任何客户端的会话信息,每个请求...
javax.ejb.EntityBean.class javax.ejb.EntityContext.class javax.ejb.FinderException.class javax.ejb.Handle.class javax.ejb.HomeHandle.class javax.ejb.MessageDrivenBean.class javax.ejb....
3. **依赖注入(Dependency Injection)**:EJB3支持JSR 330标准的依赖注入,如`@Inject`和`@EJB`注解,使得组件之间的依赖关系可以通过容器自动管理,减少了代码的耦合度。 4. **无状态会话bean(Stateless ...
标题和描述都提到了"EJB3.0开发Entity",这指向了企业级Java开发中的一个关键主题:使用EJB3.0规范进行实体(Entity)的开发。EJB(Enterprise JavaBeans)是Java平台为企业级应用提供的组件模型,EJB3.0是其重要的...