Từ đồ thị chuỗi, phương pháp giải đồ thị để tìm tập dự đoán được biểu diễn như sau:
q = R “from” + R“getTableName” ○ R “order”
= {“select * from”} ○ ({“Consumer where name =”} ○ R”a”) ○ R “order by” = {“select * from”} ○ ({“Consumer where name =”} ○
{“<<UNDEFINED>>“}) (({“order by”} ○ R “category”) “”)
= {“select * from”} ○ {“Consumer where name = <<UNDEFINED>>”} ○ (({
“order by” } ○ (({“category”} ○ {“desc”}) ({“category”} ○ { “asc”)))
“”)
= {“select * from Consumer where name = <<UNDEFINED>>”} ○ (({“order by”} ○ {“category desc”, “category asc”}) {“”})
= {“select * from Consumer where name = <<UNDEFINED>>”}, “select *
from Consumer where name = <<UNDEFINED>> ○ ({“order by category
desc”, “order by category asc”} {“”})
= [“select * from Consumer where name = <<UNDEFINED>>”,
“select * from Consumer where name = <<UNDEFINED>> order by
category desc”,
“select * from Consumer where name = <<UNDEFINED>> order by
category asc”]
Sau khi tập dự đoán được xây dựng xong, các câu truy vấn được phân tích. Các bảng sử dụng trong câu ở các vị trí quan trọng như: sau “from”, sau “join”, v.v. sẽ được lấy ra. Danh sách những bảng này sẽ được thêm vào cây cấu trúc và sinh phụ thuộc.
Bảng 2.1. Ý nghĩa các kiểu cạnh trong đồ thị chuỗi
Biểu thức Ý nghĩa Tƣơng đƣơng mã nguồn Java
v1 (INIT) v2
Giá trị của v2
là giá trị khởi tạo của v1
String var = “init value”; StringBuilder b = new StringBuilder();
method() {return “value”;} v1 (CONCAT)
v2
Giá trị v2 được thêm vào giá trị của v1
var += “concat value”; b.append(“append value”);
2.2.5 Phân tích phụ thuộc cho Hibernate
ORM Framework (Object Relational Mapping Framework) là một kỹ thuật chuyển đổi dữ liệu giữa các cơ sở dữ liệu quan hệ sang các đối tượng trong ngôn ngữ lập trình hướng đối tượng như Java, C#, v.v. Hibernate là một trong những công nghệ nền tảng cung cấp API cho phép ứng dụng có thể thao tác với cơ sở dữ liệu, ánh xạ các bảng trong cơ sở dữ liệu với các đối tượng trong Java. Hibernate hỗ trợ ánh xạ tự động thông qua tệp ánh xạ XML hoặc dùng Annotation để ánh xạ các trường trong bảng với các thuộc tính của đối tượng Java.