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

FreyjaJdbcTemplate预览版

阅读更多

简介: FreyjaJdbcTemplate的开发前言 

Freyja = JdbcTemplate + naming SQL + Cache;

 

Freyja是在spring的JdbcTemplate基础上的一层封装,核心是naming SQL部分。

 

@Entity
@Table(name = "t_user")
public class User {

	@Id
	@GeneratedValue
	@Column(name = "uid")
	private Integer id;

	private String name;
	@Transient
	private Integer level;  
	@ManyToOne
	@JoinColumn(name = "propertyId")
	private Property property;     
 	private Integer propertyId;}

 User 对应的表结构为

t_user{

int(11) uid,

varchar(32) name,

int(11) propertyId

}

 

可以看出annotation规则与JPA的一致,但是这不是JPA,仅仅是naming SQL,不支持其他注解。但是提供了@ManyToOne注解帮助关联加载实体。每个字段都需要在User实体内配置好映射关系。

 

 

freyja仅支持sql语法,通过jsqlparser这个工具将sql结构化并且在此基础上做nameing SQL和Cache

 

目前仅提供的主要接口:

<T> T get(String entityName, Object id);

<T> Object save(T entity);

<T> void update(T entity);

<T> void saveOrUpdate(T entity);

<T> Object delete(T entity);

void executeUpdate(String hql, Object... args);

List find(Integer first, Integer max, String hql, int type, Object... args);
 

其他的接口都是通过这几个衍化出来。

使用Freyja需要注意的地方:

1、对事务的支持待完善。(目前没有办法实现事务的隔离性。)

2、Freyja通过表达式来维护缓存。

3、对于不支持表达式的sql通过读取数据库数据来维护,(待完善)

4、没有查询缓存,(待完善)

 

等这4个完善之后正式版就可以发布出来了!

 

 

开发Freyja我希望达到的目的有2个:

 

1、全SQL语法支持。

2、通过掌握缓存大幅提高程序的性能。

 

附件有 源码 和 一份很粗糙的test例子。

分享到:
评论
2 楼 osacar 2013-05-19  
有分页么?
1 楼 ht7401520 2011-11-18  
支持楼主 继续努力!

相关推荐

Global site tag (gtag.js) - Google Analytics