EJB(Enterprise JavaBean):
实体Bean(Entity Bean)
消息驱动Bean(MessageDriven Bean)
会话Bean(Session Bean):Statefull Session Bean、Stateless Session Bean、Singleton Session Bean
实体Bean(Entity Bean):
fetch属性:设定提取该Entity时是否立即提取该属性信息,值:eagerly,lazy
optional属性:设定关系是否可空。类似的有nullable属性是设定数据库中该列是否可空。
orphanRemoval属性:设定在删除关系时是否同时删除对应的Entity
cascade属性:对一个实体类进行操作时是否对有对应关系的实体自动进行相同的操作。值:PERSIST(持久化操作),MERGE(持久化和修改操作),REMOVAL,REFRESH,ALL。
mappedBy属性:建立双向映射时标注对应的EntityBean中的属性名。
主键自动生成:
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
时间等值的映射:
@Temporal(TemporalType.TIMESTAMP)将对象映射成DATA或TIME或TIMESTAMP值,默认TIMESTAMP。
多对多映射时的映射表:
@ManyToMany
@JoinTable(
name="menu_category_relation",
joinColumns=
@JoinColumn(name="menu_id", referencedColumnName="id"),
inverseJoinColumns=
@JoinColumn(name="category_id", referencedColumnName="id")
)
@OrderBy("name ASC")
private List<Category> categories;
会话Bean(Session Bean):
@Stateless
@Path("/orders")
public class DishOrdersBean {
@PersistenceContext
EntityManager em;
@Resource
SessionContext sc;
@PUT
@Consumes("application/json")
@Produces("application/json")
public JSONObject addOrder(JSONObject jo) {}
@POST
@Consumes("application/json")
@Produces("application/json")
public JSONObject updateOrder() {}
@GET
@Path("/list")
@Produces("application/json")
public JSONArray getList() {}
@GET
@Path("/infolist")
@Produces("application/json")
public JSONArray getOrderInfoList() {}
@GET
@Path("/{tableNo}")
@Produces("application/json")
public JSONArray getListByTableNo(@PathParam("tableNo") long tableNo) {}
@POST
@Path("/{orderId}/{status}")
public void updateStatus(@PathParam("orderId") long orderId,@PathParam("status") String status) {}
@DELETE
@Path("/{orderId}")
public void deleteOrder(@PathParam("orderId") String orderIdStr) {}
}
本文详细介绍了EJB在企业级应用中的三种类型:实体Bean、消息驱动Bean和会话Bean,并深入探讨了它们的属性与映射关系。实体Bean讨论了fetch、optional、orphanRemoval和cascade等属性,以及如何实现时间等值的映射;会话Bean部分则通过示例展示了如何使用注解如@Stateless、@Resource和@PUT等进行操作。
644

被折叠的 条评论
为什么被折叠?



