MyEclipse6Java开发中文教程 持久化为Blob类型。用法示例: @ String maillet @ Basic:刚刚已经提到了@ Basic,它一般可以来控制是否进行延迟价值。用法示例: @ Basic(fetch= FetchType. Lazy)米用延迟加载, FetchType. EAGER一般不采用,它是非 延迟价值模式 关于实体类还有一个话题没有谈,那就是实体类不能像普通的 JavaBean那样随心所欲 的进行编写,它有一些这样的限制 Entity类必须要有一个无参数的pubc或者 protected的 Constructor 如果在应用中需要将该 Entity类分离出来在分布式环境中作为参数传递,该 Entity类 需要实现 Java.Io. Serializable接口。 Entity类不可以是fnal,也不可有fnal的方法。 abstract类和 Concrete实体类都可以作为 Entity类。 Entity类中的属性变量不可以是 public。 Entity类的属性必须通过 getter/setter或者其 他的商业方法获得。 最后,实体类还支持继承,一对一,一对多和多对多,以及命名查询( NamedQuery, 在 Netbeans开发工具生成JPA实体的时候经常可以看到)等标注。实际上 MyEclipse能 够自动生成这样的代码( Netbeans开发工具也可以生成),所以在这里我们略作介绍: 对一映射:双向一对一关系需要在关系维护端( owner side)的one2 l one Annotation 定义 mappedBy属性。建表时在关系被维护端( inverse side)建立外键列指向关系维护端 的主键列 @one ToOne(optional=true, cascade Cascade Type. ALL, mapped By =country) private Capital capital, 对多映射:双向一对多关系,一是关系维护端( owner side),多是关系被维护端 ( inverse side)。建表时在关系被维护端建立外键列指向关系维护端的主键列 DOne ToMany(targetEntity Child class, cascade= Cascade Type. ALL, mappedBy father) public List<Child> getchildren(i return children; 3 多对多映射: 多对多映射采取中间表连接的映射策略,建立的中间表将分别引入两边的主键作为外 键。(比较少用,建议不要用,性能问题严重) 下面则给大家列出一个 NamedQuery的代码片段: @Entity @Table(name="address") @Named Queries(t @Named Query(name= Address. find By Address/d, query="SELECT a FROM Address a WHERE a addressId =address/D") @Named Query(name Address findBy city", query = SELECT a FROM Address a WHERE acity =:city") @Named Query(name = Address. findByStreet, query "SELECT a FROM 刘长炯著MyEclipse 6 Java 开发中文教程 12 刘长炯著 持久化为 Blob 类型。用法示例: @Lob String mailText; @Basic:刚刚已经提到了@Basic,它一般可以来控制是否进行延迟价值。用法示例: @Basic(fetch=FetchType.Lazy) //采用延迟加载,FetchType.EAGER 一般不采用,它是非 延迟价值模式 关于实体类还有一个话题没有谈,那就是实体类不能像普通的 JavaBean 那样随心所欲 的进行编写,它有一些这样的限制: z Entity 类必须要有一个无参数的 public 或者 protected 的 Constructor。 z 如果在应用中需要将该 Entity 类分离出来在分布式环境中作为参数传递,该 Entity 类 需要实现 java.io.Serialzable 接口。 z Entity 类不可以是 final,也不可有 final 的方法。 z abstract 类和 Concrete 实体类都可以作为 Entity 类。 z Entity 类中的属性变量不可以是 public。Entity 类的属性必须通过 getter/setter 或者其 他的商业方法获得。 最后,实体类还支持继承,一对一,一对多和多对多,以及命名查询(NamedQuery, 在 Netbeans 开发工具生成 JPA 实体的时候经常可以看到)等标注。实际上 MyEclipse 能 够自动生成这样的代码(Netbeans 开发工具也可以生成),所以在这里我们略作介绍: 一对一映射:双向一对一关系需要在关系维护端(owner side)的 one2one Annotition 定义 mappedBy 属性。建表时在关系被维护端(inverse side)建立外键列指向关系维护端 的主键列。 @OneToOne(optional = true,cascade = CascadeType.ALL, mappedBy = "country") private Capital capital; 一对多映射:双向一对多关系,一是关系维护端(owner side),多是关系被维护端 (inverse side)。 建表时在关系被维护端建立外键列指向关系维护端的主键列。 @OneToMany(targetEntity = Child.class, cascade = CascadeType.ALL, mappedBy = "father") public List<Child> getChildren() { return children; } 多对多映射: 多对多映射采取中间表连接的映射策略,建立的中间表将分别引入两边的主键作为外 键。(比较少用, 建议不要用, 性能问题严重) 下面则给大家列出一个 NamedQuery 的代码片段: @Entity @Table(name = "address") @NamedQueries( { @NamedQuery(name = "Address.findByAddressID", query = "SELECT a FROM Address a WHERE a.addressID = :addressID"), @NamedQuery(name = "Address.findByCity", query = "SELECT a FROM Address a WHERE a.city = :city"), @NamedQuery(name = "Address.findByStreet", query = "SELECT a FROM