首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Hibernate 3-5迁移。Org.hibernate.Criteria:使用CriteriaBuilder将createCriteria(字符串关联、字符串别名)更改为标准JPA

Hibernate是一个开源的对象关系映射(ORM)框架,它提供了一种将Java对象映射到关系数据库中的方法。Hibernate 3-5迁移是指将Hibernate版本从3升级到5的过程。

在Hibernate 3中,我们可以使用org.hibernate.Criteria来创建查询条件。而在Hibernate 5中,推荐使用标准的JPA Criteria API来创建查询条件,以便更好地与JPA规范保持一致。

标准的JPA Criteria API是Java Persistence API(JPA)的一部分,它提供了一种类型安全的查询方式,可以通过编程方式构建查询条件,而不是使用字符串来拼接查询语句。这种方式可以提高代码的可读性和可维护性。

在Hibernate 5中,我们可以使用javax.persistence.criteria.CriteriaBuilder来创建Criteria查询,它提供了一系列的方法来构建查询条件,比如equal、notEqual、like、between等。通过CriteriaBuilder,我们可以更加灵活地创建复杂的查询条件。

在迁移过程中,我们需要将原来使用org.hibernate.Criteria的地方替换为使用javax.persistence.criteria.CriteriaBuilder。具体步骤如下:

  1. 导入javax.persistence.criteria.CriteriaBuilder类。
  2. 使用EntityManager获取CriteriaBuilder实例:CriteriaBuilder builder = entityManager.getCriteriaBuilder()。
  3. 使用CriteriaBuilder创建CriteriaQuery对象:CriteriaQuery<T> query = builder.createQuery(T.class)。
  4. 使用CriteriaQuery获取Root对象:Root<T> root = query.from(T.class)。
  5. 使用CriteriaBuilder创建查询条件:Predicate predicate = builder.equal(root.get("属性名"), 值)。
  6. 将查询条件添加到CriteriaQuery中:query.where(predicate)。
  7. 执行查询:entityManager.createQuery(query).getResultList()。

需要注意的是,迁移过程中可能还涉及到其他的API变化,比如命名策略、事务管理等。在迁移之前,建议先查阅Hibernate官方文档,了解具体的迁移指南和注意事项。

推荐的腾讯云相关产品:腾讯云数据库TencentDB、腾讯云容器服务TKE、腾讯云函数计算SCF。

腾讯云数据库TencentDB是一种高性能、可扩展的云数据库服务,支持多种数据库引擎,包括MySQL、SQL Server、PostgreSQL等。它提供了高可用性、自动备份、数据加密等功能,适用于各种规模的应用场景。

腾讯云容器服务TKE是一种基于Kubernetes的容器管理服务,可以帮助用户快速构建、部署和管理容器化应用。它提供了弹性伸缩、自动扩容、负载均衡等功能,适用于微服务架构和容器化部署的场景。

腾讯云函数计算SCF是一种无服务器计算服务,可以帮助用户在云端运行代码,无需关心服务器的管理和维护。它支持多种编程语言,包括Java、Python、Node.js等,适用于事件驱动型的应用场景。

更多关于腾讯云相关产品的介绍和详细信息,可以访问腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • QBC查询

    matchMode),判断属性值匹配某个字段,不区分大小写,模式是以判断以某个字符串开头或者结尾等,这个匹配字符串可以是整个值的字符串,也可以是其中的一部分,也可以使用%通配符.     ...1>Criteria createCriteria(String associationPath):使用默认的连接方式进行关联 2>Criteria createCriteria(String associationPath...3>Criteria createCriteria(String associationPath,String alias):该方法的功能与第一个方法的功能基本相似,只是该方法允许为关联实体指定别名;...,只是该方法允许为关联实体指定别名; 5>Criteria createCriteria(String associationPath,String alias,JoinType joinType,Criterion...)方法并不是创建一个新的Criteria实例,他只是给关联实体(包括集合里包含的关联实体)起一个别名,让后面的过滤条件可根据该关联实体进行筛选; Criteria criteria = session.createCriteria

    97550

    Spring整合HibernateHibernate JPA、Spring Data JPA、Spring Data Redis

    HibernateHibernate JPA的概念理解: 1)、JPA:由 Sun 公司提供了一个对于持久层操作的标准(该标准包含接口+文档,没有具体的实现) 。...3)、Hibernate JPA:是在 Hibernate3.2 版本中提供了对于 JPA标准的实现。提供了一套按照 JPA 标准来实现持久层开发的API。 1 <!...3、Spring Data JPA:Spring Data JPA 是 spring data 项目下的一个模块,提供了一套基于 JPA 标准操作数据库的简化方案,底层默认的是依赖 Hibernate...,其特点是可以帮助我们将其他接口的方法的返回值做适配处理,可以使得我们在开发时方便的使用这些方法。...此接口不可以单独使用,需要配合着Jpa中的其他接口配合使用的,因为该接口没有继承于其他接口。

    5.5K30

    Spring-data-jpa(spring数据持久层解决规范)详解

    在ORM框架中,Hibernate是一支很大的部队,使用很广泛,也很方便,能力也很强,同时Hibernate也是和JPA整合的比较良好,我们可以认为JPA标准,事实上也是,JPA几乎都是接口,实现都是...那么spring-data-jpa还有另外一种更好的方式,那就是所谓的类型检查的方式,上面我们的sql是字符串,没有进行类型检查,而下面的方式就使用了类型检查的方式。...这个道理在mybatis中也有体现,mybatis可以使用字符串sql的方式,也可以使用接口的方式,而mybatis的官方推荐使用接口方式,因为有类型检查,会安全。   ...一对多、多对多查询(查询条件在关联对象中时):   1、在JPA中,一个实体中如果存在多个关联对象,那么不能同时eager获取,只能有一个是eager获取,其他只能lazy;在Hibernate当中有几种独有的解决方法...补充一段题外话,关于Hibernate/JPA/Spring-Data-Jpa与MyBatis的区别联系,这种话题很多讨论,对于Hibernate/JPA/Spring-Data-Jpa,我个人而言基本上能够熟练使用

    3K20

    Spring-data-JPA详细介绍,增删改查实现「建议收藏」

    在ORM框架中,Hibernate是一支很大的部队,使用很广泛,也很方便,能力也很强,同时Hibernate也是和JPA整合的比较良好,我们可以认为JPA标准,事实上也是,JPA几乎都是接口,实现都是...那么spring-data-jpa还有另外一种更好的方式,那就是所谓的类型检查的方式,上面我们的sql是字符串,没有进行类型检查,而下面的方式就使用了类型检查的方式。...这个道理在mybatis中也有体现,mybatis可以使用字符串sql的方式,也可以使用接口的方式,而mybatis的官方推荐使用接口方式,因为有类型检查,会安全。   ...一对多、多对多查询(查询条件在关联对象中时):   1、在JPA中,一个实体中如果存在多个关联对象,那么不能同时eager获取,只能有一个是eager获取,其他只能lazy;在Hibernate当中有几种独有的解决方法...补充一段题外话,关于Hibernate/JPA/Spring-Data-Jpa与MyBatis的区别联系,这种话题很多讨论,对于Hibernate/JPA/Spring-Data-Jpa,我个人而言基本上能够熟练使用

    2.4K30

    【原创】纯干货,Spring-data-jpa详解,全方位介绍。

    在ORM框架中,Hibernate是一支很大的部队,使用很广泛,也很方便,能力也很强,同时Hibernate也是和JPA整合的比较良好,我们可以认为JPA标准,事实上也是,JPA几乎都是接口,实现都是...那么spring-data-jpa还有另外一种更好的方式,那就是所谓的类型检查的方式,上面我们的sql是字符串,没有进行类型检查,而下面的方式就使用了类型检查的方式。...这个道理在mybatis中也有体现,mybatis可以使用字符串sql的方式,也可以使用接口的方式,而mybatis的官方推荐使用接口方式,因为有类型检查,会安全。   ...一对多、多对多查询(查询条件在关联对象中时):   1、在JPA中,一个实体中如果存在多个关联对象,那么不能同时eager获取,只能有一个是eager获取,其他只能lazy;在Hibernate当中有几种独有的解决方法...补充一段题外话,关于Hibernate/JPA/Spring-Data-Jpa与MyBatis的区别联系,这种话题很多讨论,对于Hibernate/JPA/Spring-Data-Jpa,我个人而言基本上能够熟练使用

    2K10

    springJPA 之 QueryDSL(一)

    但是如果涉及到多表动态查询, JPA 的功能就显得有些捉襟见肘了,虽然我们可以使用注解 @Query ,在这个注解中写 SQL 或者 HQL 都是在拼接字符串,并且拼接后的字符串可读性非常的差,当然 JPA...还为我们提供了 Specification 来做这件事情,从我个人使用体验上来讲,可读性虽然还不错,但是在初学者上手的时候, Predicate 和 CriteriaBuilder 使用方式估计能劝退不少人...这些都无法直观的获得,还需我们手动 Object[] 映射到我们需要的 Model 类里面去,这种使用体验无疑是极其糟糕的。...可以通过诸如 QueryDSL 之类的 API 构造查询,而不是查询编写为内联字符串或将其外部化为XML文件。...小结 有关 QueryDSL 的介绍到这里就结束了,不知道各位读者看了上面的示例,有没有一种直接读 SQL 的感觉,而且这种 SQL 还是使用 OOM 的思想,原本 Hibernate 没有做好的事情给出了一个相当完美的解决方案

    4.9K40

    什么是JPA_论文题目不能用浅谈吗

    定义 JPA 即Java Persistence API。 JPA 是一个基于O/R映射的标准规范(目前最新版本是JPA 2.1 )。...所谓规范即只定义标准规则(如注解、接口),不提供实现,软件提供商可以按照标准规范来实现,而使用者只需按照规范中定义的方式来使用,而不用和软件提供商的实现打交道。...JPA 的主要实现有Hibernate、EclipseLink 和OpenJPA 等,这也意味着我们只要使用JPA 来开发,无论是哪一个开发方式都是一样的。...JPA提供的技术: ORM映射元数据:JPA支持XML和JDK 5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此实体对象持久化到数据库表中; JPA 的API:定义规范,以操作实体对象...可使用joinColumns来标注外键、使用 @Version来实现乐观锁。 关联关系还可以定制延迟加载和级联操作的行为。

    1.6K20

    Spring认证中国教育管理中心-Spring Data JPA 参考文档六

    规格 JPA 2 引入了一个标准 API,您可以使用它以编程方式构建查询。通过编写criteria,您可以定义域类查询的 where 子句。...再退一步,这些标准可以被视为对 JPA 标准 API 约束所描述的实体的谓词。...Spring Data JPA 从 Eric Evans 的书“Domain Driven Design”中采用了规范的概念,遵循相同的语义并提供 API 以使用 JPA 标准 API 定义此类规范。...JPA 元模型生成器生成的元模型类型(有关示例,请参阅Hibernate 实现的文档)。...您可以使用它来创建Example. 默认情况下,null忽略具有值的字段,并使用商店特定的默认值匹配字符串属性包含在 Query by Example 标准中是基于可空性。

    1.3K20

    Spring全家桶之SpringData——Spring Data JPA

    提供了一套基于JPA标准操作数据库的简化方案。底层默认的是依赖Hibernate JPA 来实现的。...与Hibernate Jpa 逆向工程: 通过数据库表自动创建对应的实体类以及查询方法 逆向工程的使用 测试类中 注解名称 作用 @RunWith(SpringJUnit4ClassRunner.class...项目 介绍 Spring Data JPA 实现无需在dao层实现类书写代码即可实现对数据库的操作 使用的查询语言是 HQL语言 本项目是基于 Hibernate Jpa项目上构建 ,Hibernate...可以使得我们在开发时方便的使用对数据库进行DML操作方法。...> query:定义了一个基本的查询.一般不使用 * @param CriteriaBuilder cb:创建一个查询条件 * @return Predicate:定义了查询条件

    3.8K10

    持久层框架中是什么让你选择 MyBatis?

    hbm.xml 映射文件一张数据库表与一个 Java 类进行关联之后,该数据库表中的每一行记录都可以被转换成对应的一个 Java 对象。...Hibernate 中的映射文件也必须要能够表达这种复杂关联关系才能够满足我们的需求,同时,还要能够这种关联关系与数据库中的关联表、外键等一系列关系模型中的概念进行映射,这也就是 ORM 框架中常提到的...在实现复杂数据库操作的时候,我们可以使用 HQL 这种面向对象的查询语句来实现,Hibernate 的 HQL 引擎会根据底层使用的数据库产品, HQL 语句转换成合法的 SQL 语句。...三年后,也就是 2013 年,MyBatis 源代码迁移到了 GitHub。...在实际业务中,对同一数据集的查询条件可能是动态变化的,如果你有使用 JDBC 或其他类似框架的经历应该能体会到,拼接 SQL 语句字符串是一件非常麻烦的事情,尤其是条件复杂的场景中,拼接过程要特别小心,

    47230

    再见 MyBatis!我选择 JDBCTemplate!

    支持JPA的框架,例如Ebean都属于这种类型的框架。 但封装SQL,使用另一种纯的面向对象查询语言代替sql,真的能够让程序员容易实现持久层操作吗?...不管是hibernate还是jpa,表之间的连接查询,被映射为实体类之间的关联关系,这样,如果两个实体类之间没有(实现)关联关系,你就不能把两个实体(或者表)join起来查询。...从SQL封装角度上看,MyBatis比HibernateJPA成功,SQL本不该被封装和隐藏,让Java程序员使用SQL既不麻烦也容易学习和上手,这应该是MyBatis流行起来的重要原因。...,也许是因为这个方案是纯的标准JPA方案。...这是因为DSL风格编程参数化查询比拼接字符串查询简单,没人会拼接字符串。而jdbc/hql/JPQL拼接字符串有时候比参数化查询简单,特别是jdbc,很多人会偷懒使用不安全的方式。

    2.8K40

    再见!Mybatis,你好!JDBCTemplate

    支持JPA的框架,例如Ebean都属于这种类型的框架。 但封装SQL,使用另一种纯的面向对象查询语言代替sql,真的能够让程序员容易实现持久层操作吗?...不管是hibernate还是jpa,表之间的连接查询,被映射为实体类之间的关联关系,这样,如果两个实体类之间没有(实现)关联关系,你就不能把两个实体(或者表)join起来查询。...从SQL封装角度上看,MyBatis比HibernateJPA成功,SQL本不该被封装和隐藏,让Java程序员使用SQL既不麻烦也容易学习和上手,这应该是MyBatis流行起来的重要原因。...,也许是因为这个方案是纯的标准JPA方案。...这是因为DSL风格编程参数化查询比拼接字符串查询简单,没人会拼接字符串。而jdbc/hql/JPQL拼接字符串有时候比参数化查询简单,特别是jdbc,很多人会偷懒使用不安全的方式。

    3.9K10

    放弃MyBatis!我选择 JDBCTemplate!

    支持JPA的框架,例如Ebean都属于这种类型的框架。 但封装SQL,使用另一种纯的面向对象查询语言代替sql,真的能够让程序员容易实现持久层操作吗?...不管是hibernate还是jpa,表之间的连接查询,被映射为实体类之间的关联关系,这样,如果两个实体类之间没有(实现)关联关系,你就不能把两个实体(或者表)join起来查询。...从SQL封装角度上看,MyBatis比HibernateJPA成功,SQL本不该被封装和隐藏,让Java程序员使用SQL既不麻烦也容易学习和上手,这应该是MyBatis流行起来的重要原因。...,也许是因为这个方案是纯的标准JPA方案。...这是因为DSL风格编程参数化查询比拼接字符串查询简单,没人会拼接字符串。而jdbc/hql/JPQL拼接字符串有时候比参数化查询简单,特别是jdbc,很多人会偷懒使用不安全的方式。

    13110

    放弃 MyBatis、JPA,我最终选择了 JDBC Template!真香!!

    支持JPA的框架,例如Ebean都属于这种类型的框架。 但封装SQL,使用另一种纯的面向对象查询语言代替sql,真的能够让程序员容易实现持久层操作吗?...不管是hibernate还是jpa,表之间的连接查询,被映射为实体类之间的关联关系,这样,如果两个实体类之间没有(实现)关联关系,你就不能把两个实体(或者表)join起来查询。...从SQL封装角度上看,MyBatis比HibernateJPA成功,SQL本不该被封装和隐藏,让Java程序员使用SQL既不麻烦也容易学习和上手,这应该是MyBatis流行起来的重要原因。...,也许是因为这个方案是纯的标准JPA方案。...这是因为DSL风格编程参数化查询比拼接字符串查询简单,没人会拼接字符串。而jdbc/hql/JPQL拼接字符串有时候比参数化查询简单,特别是jdbc,很多人会偷懒使用不安全的方式。

    3.3K10
    领券