`
aa87963014
  • 浏览: 150540 次
  • 性别: Icon_minigender_1
  • 来自: 布尼塔尼亚
社区版块
存档分类
最新评论

FreyjaJdbcTemplate特性一:HQL

 
阅读更多

freyja2大特点:hql+cache

 

freyja可以无缝替换掉hibernate,才怪。

 

freyja主要功能是为了实现对jdbc操作的封装而不是替换hibernate,但是为了替换掉项目中的hibernate,freyja实现了简单的hql语法(而且也实现不了复杂的)

举个例子来看下freyja大概支持哪些hql/sql语法(理论上支持全sql映射)

 

 

select x.n,x.id,x.name,devscore,u.uid,cityId from User u left join ( select * from ( select i.userId as n,i.id,h.cityId from UserInfo i left join Hero h  on h.userId = i.userId ) a) x on x.n = u.uid

这里面有User UserInfo Hero 3个对象
  
select army.name,number from ArmyProduce  where army.name = 'h' and number = 1

select * from ArmyProduce a where a.army.name = 'h' and number = 1
这里面有ArmyProduce 和Army 2个对象

ArmyProduce 和Army 是一对多关系

 @Entity

 

@Table(name = "t_army_produce")
public class ArmyProduce {
	@Id
	@GeneratedValue
	@Column(name = "Id", unique = true, nullable = false)
	private Long id;

	@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
	@JoinColumn(name = "ARMY_ID")
	private Army army;

	@Column(name = "NUMBER")
	private Integer number;

	@Column(name = "userId")
	private Long userId;

}

 可以看出和hibernate一样支持jpa规范的annotation注解没有什么区别。

但是只目前只支持ManyToOne注解,而且没有延迟加载。(其他的注解如ManyToMany不会去支持。)主键也只支持自动增长,当然其他的一些主键如uuid应该会加进来。

 

Freyja的做法是使用jsqlparser这个工具把hql结构化,然后根据annotation转化为sql。freyja支持/不支持部分写法取决于2点:

 

1、jsqlparser能否识别该写法。2、能否转化为sql。

 

理论上1通过那么2也会通过。这个也是我正在努力的一个方面。

jsqlparser的作者估计把太多脑细胞放在select语法上面了。update和delete的语法只支持非常简单的部分:

 

update table set xx='1',oo='2' where xx='3'
delete from table where xx='3'

 

 大概就这种形式。

freyja改造加上hql语法支持之后变成了:

 

update ArmyProduce set number = 1 where army.name = 'h' and number = 2
delete from ArmyProduce where army.name = 'h' and number = 1

 

 情况还是不宜乐观。

 

 

FreyjaJdbcTemplate特性一:HQL 

 

FreyjaJdbcTemplate特性二:cache

 

FreyjaJdbcTemplate特性三:JdbcTemplate 

 

 

分享到:
评论

相关推荐

    Hibernate中的查询:HQL、Criteria、原生SQl

    Hibernate中的查询:HQL、Criteria、原生SQl的Demo,希望可以帮助大家理解Hibernate查询。

    HQL语法入门学习HQL语法入门学习

    HQL语法入门学习HQL语法入门学习HQL语法入门学习HQL语法入门学习HQL语法入门学习HQL语法入门学习HQL语法入门学习HQL语法入门学习HQL语法入门学习HQL语法入门学习HQL语法入门学习HQL语法入门学习HQL语法入门学习HQL...

    HQL语句 HQL语句

    HQL语句 HQL语句 HQL语句 HQL语句 HQL语句

    Hibernate 课件_HQL

    我培训时用的 Hibernate 课件, 个人能力范围... 内容如下:HQL 查询;Query 接口及其主要方法;Select 子句;更新与删除;引用查询;联合查询;子查询;数据加载方式;Sql 查询;分页查询;管理 Session;ThreadLocal 接口的使用

    NHibernate查询语言(HQL)文档.

    而对于HQL:Customer 是一个对象,Firstname 是 Customer对象的属性。相比之下SQL 语句非常灵活,但是没有编译时语法验证支持。 本节介绍基础语法:from子句,select子句,where子句,orderby子句,groupby子句并...

    HQL Eclipse Plugins 配置教程

    所以在网上找到了一个elipse插件 英文图文教程 https://www.hibernate.org/hib_docs/tools/reference/en/html/plugins.html 下载地址 http://www.oschina.net/p/hibernate+tools 附件中为本人配置的eclipse ...

    hql语句大全hql语句大全

    hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全

    HQL 详解 HQL查询

    Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性,因此Hibernate将HQL查询方式立为官方推荐的标准查询方式,HQL查询...

    HQL语句大全HQL语句大全

    HQL语句大全HQL语句大全HQL语句大全HQL语句大全HQL语句大全

    hql ppt Hql PPt

    Hql PPt Hql PPt

    hql模糊查询hql模糊查询

    hql模糊查询hql模糊查询hql模糊查询hql模糊查询

    hive开发资料中文版

    hive定义了一个类似于SQL的查询语 言:HQL,能够将用户编写的QL转化为相应的Mapreduce程序基于Hadoop执行。 本文讲解如何搭建一个Hive平台。假设 我们有3台机器:hadoop1,hadoop2,hadoop3。并且都安装好了Hadoop-...

    hive开发资料.docx

    hive定义了一个类似于SQL的查询语 言:HQL,能够将用户编写的QL转化为相应的Mapreduce程序基于Hadoop执行。 本文讲解如何搭建一个Hive平台。假设 我们有3台机器:hadoop1,hadoop2,hadoop3。并且都安装好了Hadoop-...

    HQL是hibernate自己的一套查询

    HQL是hibernate自己的一套查询

    HQL语法大全,并带有详细的例子

    HQL查询依赖于Query类,每个Query实例对应一个查询对象,使用HQL查询按 如下步骤进行: (1)获取Hibernate Session对象; (2)编写HQL语句; (3)以HQL语句作为参数,调用Session的createQuery方法创建查询对象; (4)...

    Hibernate-HQL、Criteria、SQL实现查询对照以及增删改代码

    本文旨在为读者呈现不同的方式查询方式:HQL方式的查询、SQL原生态SQL方式的查询、以及Criteria方式的查询,拓展查询的不同实现思路,开阔视野、并涵盖了部分的Hibernate增删改的基本操作。

    Hibernate三大类查询总结

    第一:关于cretiria的查询 第二:HQL查询 第三,本地SQL查询

    sql转换hql工具

    之前写好SQL,再到代码里面来写,语句复杂的看的时不时细节会忘记,用sql转换hql工具,直接贴近了就可以了;

    hql语句 使用大全

    hql语句常规 方法 使用 了解hql语句

    Hibernate之HQL查询

    HQL查询是一种面向对象的查询语言,其中没有表和字段的概念,只有类、对象和属性的概念,HQL 是应用较为广泛的方式.这是本人对HQL知识点做的一个总结性的练习

Global site tag (gtag.js) - Google Analytics