JFreeChart হল একটি শক্তিশালী Java লাইব্রেরি যা চার্ট এবং গ্রাফিক্যাল ভিজুয়ালাইজেশন তৈরি করতে ব্যবহৃত হয়। এটি Hibernate এবং JDBC এর সাথে সংযুক্ত করা যেতে পারে যাতে ডেটাবেস থেকে ডেটা নিয়ে চার্ট তৈরি করা যায়। এখানে, JFreeChart এর মাধ্যমে Hibernate এবং JDBC ব্যবহার করে ডেটাবেসের ডেটা ভিজুয়ালাইজেশন করা হবে।
Hibernate এবং JDBC এর সাথে JFreeChart Integration
Hibernate এবং JDBC দুইটি সাধারণ ডেটাবেস কানেকশন টেকনিক। Hibernate একটি ORM (Object-Relational Mapping) টুল যা ডেটাবেসের রিলেশনাল ডেটা ফ্রেমওয়ার্কের সাথে সংযোগ স্থাপন করে, যেখানে JDBC ডিরেক্ট SQL কোড ব্যবহার করে ডেটাবেসে অ্যাক্সেস প্রদান করে।
এখানে আমরা দেখব কিভাবে Hibernate এবং JDBC ব্যবহার করে ডেটাবেস থেকে ডেটা নিয়ে JFreeChart-এ প্রদর্শন করা যায়।
1. Hibernate Integration with JFreeChart
Hibernate ব্যবহার করে ডেটাবেস থেকে ডেটা নিয়ে তা JFreeChart দিয়ে ভিজুয়ালাইজ করা একটি খুবই সাধারণ প্রয়োগ। এখানে আমরা একটি Hibernate-based ডেটাবেস থেকে Bar Chart তৈরি করব।
Hibernate Configuration
Hibernate ব্যবহার করার জন্য, প্রথমে আপনাকে Hibernate এর কনফিগারেশন তৈরি করতে হবে। hibernate.cfg.xml ফাইলের মাধ্যমে ডেটাবেস কানেকশন কনফিগারেশন করা হয়।
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- JDBC Database connection settings -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/your_database_name</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">password</property>
<!-- JDBC connection pool settings -->
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<!-- Specify dialect -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="hibernate.current_session_context_class">thread</property>
<!-- Echo all executed queries -->
<property name="hibernate.show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hibernate.hbm2ddl.auto">update</property>
</session-factory>
</hibernate-configuration>
Hibernate Entity Class
এটি একটি সিম্পল Employee entity ক্লাস যা ডেটাবেস থেকে ডেটা ফেচ করার জন্য ব্যবহৃত হবে।
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Employee {
@Id
private int id;
private String name;
private double salary;
// Getter and Setter methods
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public double getSalary() { return salary; }
public void setSalary(double salary) { this.salary = salary; }
}
Hibernate Data Fetching and JFreeChart Integration
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
import java.util.List;
public class HibernateChartExample {
public static void main(String[] args) {
// Hibernate session setup
SessionFactory factory = new Configuration().configure("hibernate.cfg.xml")
.addAnnotatedClass(Employee.class)
.buildSessionFactory();
Session session = factory.getCurrentSession();
session.beginTransaction();
// Fetch employee data
List<Employee> employees = session.createQuery("from Employee").getResultList();
// Create dataset for JFreeChart
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for (Employee employee : employees) {
dataset.addValue(employee.getSalary(), "Salary", employee.getName());
}
// Create bar chart
JFreeChart chart = ChartFactory.createBarChart(
"Employee Salary Chart", // Chart Title
"Employee", // X-Axis Label
"Salary", // Y-Axis Label
dataset, // Dataset
org.jfree.chart.plot.PlotOrientation.VERTICAL, true, true, false);
// Display chart
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
JFrame frame = new JFrame();
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
// Commit transaction and close session
session.getTransaction().commit();
session.close();
}
}
ব্যাখ্যা:
- Hibernate দিয়ে ডেটাবেস থেকে Employee ডেটা ফেচ করা হয়েছে।
- JFreeChart এর মাধ্যমে একটি Bar Chart তৈরি করা হয়েছে, যেখানে কর্মীদের নামের উপর ভিত্তি করে তাদের Salary প্রদর্শন করা হয়েছে।
- ChartPanel এর মাধ্যমে JFreeChart GUI তে প্রদর্শিত হচ্ছে।
2. JDBC Integration with JFreeChart
JDBC এর মাধ্যমে সরাসরি SQL কুয়েরি ব্যবহার করে ডেটা সংগ্রহ করা যায়। এই কৌশলটি তখন ব্যবহৃত হয় যখন Hibernate ব্যবহারের প্রয়োজন না হয় এবং ডেটাবেস থেকে ডেটা সরাসরি SQL কুয়েরি দিয়ে আনা হয়।
JDBC Connection and JFreeChart Integration
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JdbcChartExample {
public static void main(String[] args) {
// JDBC Connection
String jdbcUrl = "jdbc:mysql://localhost:3306/your_database_name";
String user = "root";
String password = "password";
try {
Connection connection = DriverManager.getConnection(jdbcUrl, user, password);
Statement statement = connection.createStatement();
String sql = "SELECT name, salary FROM employee";
ResultSet resultSet = statement.executeQuery(sql);
// Create dataset for JFreeChart
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
while (resultSet.next()) {
String name = resultSet.getString("name");
double salary = resultSet.getDouble("salary");
dataset.addValue(salary, "Salary", name);
}
// Create bar chart
JFreeChart chart = ChartFactory.createBarChart(
"Employee Salary Chart", // Chart Title
"Employee", // X-Axis Label
"Salary", // Y-Axis Label
dataset, // Dataset
org.jfree.chart.plot.PlotOrientation.VERTICAL, true, true, false);
// Display chart
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
JFrame frame = new JFrame();
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
// Close connections
resultSet.close();
statement.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- JDBC ব্যবহার করে Employee ডেটা SQL কুয়েরি দিয়ে ডেটাবেস থেকে ফেচ করা হয়েছে।
- JFreeChart দিয়ে সেই ডেটার উপর একটি Bar Chart তৈরি করা হয়েছে।
- ChartPanel এর মাধ্যমে চার্টটি JFrame এ প্রদর্শিত হচ্ছে।
সারসংক্ষেপ
JFreeChart এর সাথে Hibernate এবং JDBC ব্যবহার করে আপনি ডেটাবেস থেকে ডেটা ফেচ করে সেই ডেটা গ্রাফিক্যালভাবে ভিজুয়ালাইজ করতে পারেন। Hibernate এর মাধ্যমে ORM ব্যবহার করে আপনি ডেটা ম্যানেজমেন্ট সহজে করতে পারবেন, যেখানে JDBC সরাসরি SQL কুয়েরি দিয়ে ডেটাবেস থেকে ডেটা রিট্রিভ করার একটি সরাসরি পদ্ধতি। JFreeChart এ এই ডেটা ভিজুয়ালাইজ করতে আপনি বিভিন্ন ধরনের চার্ট যেমন Bar Chart, Line Chart, Pie Chart ইত্যাদি ব্যবহার করতে পারবেন।
Read more