1、 mappedBy的用法:
①、如果两个实体Bean是双向多对多关联,在使用了mappedBy的一端我们称为关系目标方(方便起见,称为被控方),另一端称之为关系拥有方(方便起见,称为控制方)。相应的对象以下称之为主控对像和被控对象。注:佛山人出的那本书上对此的注释正好相返了。在6.6.3节,一对一映射中,原语如下:一对一关系需要在关系维护端(owner side)的@OneToOne注释中定义mappedBy 属性。在关系被维护端(inverseside)建立外键列指向关系维护端的主键列。
②、容器在根据上述的mappedBy关系建立临时表时,是以“主控表名_被控表名”的方式创建的。
③、在利用em.persist()方法新增主控对象,并且主控对像设置了被控对像的集合属性,则被控对象和主控对像的关联关系会增加到中间关联表。反过来增加被控对像,则关联关系不会增加在关联表中,除非利用merge方法修改被控对像。这就是mappedBy的用法。
④、举例说明:
以上三个类(除User)为双向多对多关系,实体之前没有任何级联关系。User依赖于Account,他们的级联关系为all,且为单向一对一的关系,User映射到Account.在TestCase中写如下代码:
PermissionManager manager = BeanLookup.getInstance().lookup(PermissionManager.class);
//和用户关联;
manager.addPermission("KEY_6", new Dialect("Permission6", "zh_CN"),
new Dialect("description6", "zh_CN"), null, null);
Permission permission = manager.getPermissionByKey("KEY_6");
assertNotNull(permission);
Account account = new Account();
account.setAccount("557");
account.setPassword("557");
account.getPermissions().add(permission);
User user = new User();
user.setAccount(account);
user.setName(new Dialect("name1", "zh_CN"));
user.setCreationTime(new Date());
UserManager userManager = BeanLookup.getInstance().lookup(UserManager.class);
userManager.addUser(user);
由于User和Account是级联保存的,所以Account在User新增的时候也会增加。如果在实体Bean中把Account设置为关系主控端,则上述写法会自动将account与permission的关联关系写入中间关联表。如果Account为关系被控端,则不会。(注意上述代码红色部份)或者手工去merger(permission)也能实现写入关联关系进中间表。
2、 在一个TestCase中通过Collection.getSize()方法去加载一个延迟的集合属性不起作用。这种方法只能在Session Bean中起作用。
分享到:
相关推荐
随着技术的发展,EJB 从最初的复杂性逐渐转向简化,并在 EJB 3.0 中实现了重大突破。EJB 3.0 引入了 POJO (Plain Old Java Object) 风格的编程模型,大大简化了开发过程。本教程旨在帮助开发者快速掌握如何使用 ...
EJB (Enterprise JavaBeans) 3.0 是Java EE平台的一部分,它引入了...以上就是EJB 3.0中一些核心注解的详细解释,它们极大地简化了企业级Java应用的开发,使得开发者能够更加专注于业务逻辑,而不是繁琐的持久层配置。
### EJB 3.0 注解详解 #### 1. `@Id` —— 主键标识 ...以上是EJB 3.0中一些常见的注解及其使用方法。这些注解大大简化了Java EE应用的开发过程,使得开发者能够更加专注于业务逻辑而不是框架本身。
EJB 3.0版本引入了许多简化开发的特性,包括对ORM(对象关系映射)的改进,使得数据持久化变得更加直观。本实习项目专注于EJB 3.0中的多对多(Many-to-Many)关系实现,这对于理解数据库设计和企业级应用的数据管理...
`@OneToMany`注解指定了这个关系,而`mappedBy`属性指定了反向关系在`Employee`类中的属性名。 ### 5. 管理OneToMany关系 管理`OneToMany`关系涉及到操作集合,如添加或删除元素。JPA提供了一些便利的方法,如`add...
Java Persistence API (JPA) 是 Java EE 5 和 EJB 3.0 的一部分,它极大简化了企业级 Java 应用程序中的数据持久化过程。JPA 提供了一种声明式的对象关系映射 (ORM) 方法,允许开发人员以一种标准化和可移植的方式来...
随着开发社区的广泛支持,尤其是Spring和EJB3.0开发团队的认可,JPA有望成为ORM领域的标准化整合者。 #### 2. JPA的技术组成 - **ORM映射元数据**: - 支持XML和JDK5.0注解两种形式,用于描述对象和数据库表之间的...
@OneToMany(mappedBy = "user") private List<Order> orders; // 省略 getter 和 setter } ``` - **提前加载关联对象**:通过 Session 的 load 或 get 方法提前加载关联对象,避免懒加载时触发额外查询。 ...