ObjectiveSQL (A New Java ORM) 1.4.5 Has Been Released
Here's a quick snippet showing off the latest features of ObjectiveSQL, a Java ORM framework.
Join the DZone community and get the full member experience.
Join For FreeObjectiveSQL is an ORM framework in Java based on the ActiveRecord pattern, which encourages rapid and clean development and clean, minimal coding, and convention over configuration.
GitHub: https://github.com/braisdom/ObjectiveSql
Features
- With one annotation, your
Class
has fully featured capabilities of SQL programming - Easy relational queries (
has_one
,has_many
, andbelongs_to
) and paged queries - Writing SQL expressions (
arithmetic
,comparison
, andlogical
) using Java syntax
Why to choose
- If your project focuses on data analysis based on relation database, and a lot of arithmetic expressions in SQL statement. ObjectiveSQL will help you write expressions conveniently and safely using Java syntax
- If you don’t want to write Java codes of database access and various configuration files, ObjectiveSQL's dynamic code generation will help you access the database without coding
Performance
Complex SQL Programming
Java
x
10
9
1
Order.Table orderTable = Order.asTable();
2
Select select = new Select();
3
4
// In ObjectiveSQL, Java operator can be overloaded
5
select.project(sum(orderTable.amount) / sum(orderTable.quantity) * 100)
6
.from(orderTable)
7
.where(orderTable.quantity > 30 &&
8
orderTable.salesAt.between("2020-10-10 00:00:00", "2020-10-30 23:59:59"))
9
.groupBy(orderTable.productId);
As you can see, operators of Java can be converted into operators of SQL, it means that you can write SQL using Java syntax. In Java, SQL dynamic programming, logic, etc. is possible
SQL
xxxxxxxxxx
1
1
SELECT SUM(`T0`.`amount`) / SUM(`T0`.`quantity`) * 100
2
FROM `orders` AS `T0`
3
WHERE `T0`.`quantity` > 30 AND
4
`T0`.`sales_at` BETWEEN '2020-10-10 00:00:00' AND '2020-10-30 23:59:59')
5
GROUP BY `T0`.`product_id`
Simple SQL Programming Without Coding
Java
x
14
1
2
public class Member {
3
private String no;
4
5
6
private String name;
7
private Integer gender;
8
private String mobile;
9
private String otherInfo;
10
11
relationType = RelationType.HAS_MANY) (
12
private List<Order> orders;
13
}
Persistence
Java
xxxxxxxxxx
1
1
Member.create(newMember);
2
Member.create(new Member[]{newMember1, newMember2, newMember3}, false);
3
4
Member.update(1L, newMember, true);
5
Member.update("name = 'Smith => Jackson'", "name = ?", "Alice");
6
7
Member.destroy(1L);
8
Member.destroy("name = ?", "Mary");
Counting and Querying
Java
xxxxxxxxxx
1
1
Member.countAll();
2
Member.count("id > ?", 1);
3
Member.queryByPrimaryKey(1);
4
Member.queryFirst("id = ?", 1);
5
Member.query("id > ?", 1);
6
Member.queryAll();
Relation Querying
Java
xxxxxxxxxx
1
1
Member.queryAll(Member.HAS_MANY_ORDERS);
2
Member.queryByPrimary(1, Member.HAS_MANY_ORDERS);
3
Member.queryByName("demo", Member.HAS_MANY_ORDERS);
Paged Querying
Java
xxxxxxxxxx
1
1
Page page = Page.create(0, 10);
2
PagedList<Member> members = Member.pagedQueryAll(page, Member.HAS_MANY_ORDERS);
Topics:
java,
sql,
objectivesql
Opinions expressed by DZone contributors are their own.
Comments