2022年play框架手册-.JPA持久化 .pdf
《2022年play框架手册-.JPA持久化 .pdf》由会员分享,可在线阅读,更多相关《2022年play框架手册-.JPA持久化 .pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 07.JPA 持久化play 提供了一些非常有用的帮助类来简单管理jpa 实体。注意: 如果需要,你仍旧可以继续使用原始的JPA API。启动 JPA实体管理器当 play 找到至少一个注释了 javax.persistence.Entity标识的类时, play 将自动启动 hibernate实体管理器。前提是已经有一个正确的JDBC数据源配置,否则会导致失败。获取 JPA实体管理器当 JPA实体管理器启动后,就可以在应用程序代码中得到管理器,并使用JPA帮助类了,比如:public static index() Query query = JPA.em().createQuery(se
2、lect * from Article); List articles = query.getResultList(); render(articles); 事务管理play 会自动管理事务。当http 请求到达, play 就会为每个 http 请求启动一个事务。当 http response 发送的时候,就会把事务提交。如果代码抛出异常,事务将会自动回滚。如果需要在代码中强制回滚事务,可以使用JPA.setRollbackOnly()方法,以告诉 JPA不要提交当前事务。也可使用注释明确哪些事务要进行处理。如果在控制器里用 play.db.jpa.Transactional(readOnl
3、y=true)注释了控制器的某个方法,那么这个事务是只读的。如果不想让 play 启动事务,可以使用以下注释play.db.jpa.NoTransaction。如果不想让类的所有方法执行事务,可以对控制器类进行注释:play.db.jpa.NoTransaction. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - 2 当使用 play.db.jpa.NoTransaction注释时, Play 不会从连接池中获取连接,以提高运
4、行速度。play.db.jpa.Model支持类在 play 中, 这是最主要的帮助类, 如果你的 jpa 实体继承了 play.db.jpa.Model类,那么这个实体类将得到许多非常有用的方法来管理jpa 访问。比如下面的 Post 模型对象:Entity public class Post extends Model public String title; public String content; public Date postDate; ManyToOne public Author author; OneToMany public List comments; play.db
5、.jpa.Model类自动提供了一个自增长的Long id 域。采用自增长的 Long id 主键对 jpa 模型来说是个好主意。注意,我们事实上已经使用了play 中的一特性,也就是说play 会自动把 Post类中的 public成员认作属性。因此, 我们不需要为这些成员书写setter/getter。为 GenreicModel 定制 id 映射play 并不强制使用 play.db.jpa.Model。你的 JPA实体也可以继承play.db.jpa.GenericModel,如果不打算使用Long类型的 id 作为主键,就必须这样做。比如,下面是一个非常简单的User 实体类。它的
6、id 是 UUID , name 和 mail 属性都是非空值,我们使用Play 验证进行强制检测:Entity public class User extends GenericModel Id GeneratedValue(generator = system-uuid) GenericGenerator(name = system-uuid, strategy = uuid) public String id; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页
7、 - - - - - - - - - 3 Required public String name; Required MaxSize(value=255, message = “email.maxsize ”) play.data.validation.Email public String mail; Finding 对象play.db.jpa.Model提供了几种方式来查找数据,比如:Find by ID 这是查找对象最简单的方式:Post aPost = Post.findById(5L); Find all List posts = Post.findAll(); 这是获取所有 pos
8、ts 对象最简单的方式,类似的应用还有:List posts = Post.all().fetch(); 下面对结果进行分页:/ 最多 100 条List posts = Post.all().fetch(100); 或/ 50至 100条List posts = Post.all().from(50).fetch(100); 使用简单查询进行查找以下方式允许你创建一些非常有用的查询,但仅限于简单查询:Post.find(byTitle, My first post).fetch(); Post.find(byTitleLike, %hello%).fetch(); Post.find(byA
9、uthorIsNull).fetch(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - 4 Post.find(byTitleLikeAndAuthor, %hello%, connectedUser).fetch(); 简单查询遵循以下语法 属性 比较And?,比较可取以下值:LessThan 小于给定值LessThanEquals小于等于给定值GreaterThan大于给定值GreaterThanEquals大于等于给定
10、值Like 等价于 SQL的 like 表达式,但属性要为小写。Ilike和 Like相似,大写不敏感,也就是说参数要转换成小写。Elike -等价于 SQL的 like 表达式,不进行转换。NotEqual不等于Between两个值之间(必须带2 个参数)IsNotNull 非空值(不需要任何参数)IsNull 空值(不需要任何参数)使用 JPQL 查询进行查找如:Post.find( select p from Post p, Comment c + where c.post = p and c.subject like ?, %hop% ); 或仅查询某部分 : Post.find(ti
11、tle, My first post).fetch(); Post.find(title like ?, %hello%).fetch(); Post.find(author is null).fetch(); Post.find(title like ? and author is null, %hello%).fetch(); Post.find(title like ? and author is null order by postDate, %hello%).fetch(); 也可仅有 order by语句:Post.find(order by postDate desc).fetc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年play框架手册-.JPA持久化 2022 play 框架 手册 JPA 持久
限制150内