欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

FreyjaJdbcTemplate预览版

程序员文章站 2022-03-07 15:20:15
...

简介: 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例子。