package org.kodejava.swing;
import javax.swing.*;
import java.awt.*;
public class JLabelDemo extends JFrame {
public JLabelDemo() throws HeadlessException {
initialize();
}
private void initialize() {
setSize(150, 300);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setLayout(new FlowLayout());
// Create some JLabel with Texts and define the horizontal alignment
JLabel label1 = new JLabel("Username :", JLabel.RIGHT);
JLabel label2 = new JLabel("Password :", JLabel.RIGHT);
JLabel label3 = new JLabel("Confirm Password :", JLabel.RIGHT);
JLabel label4 = new JLabel("Remember Me!", JLabel.LEFT);
JLabel label5 = new JLabel("Hello, Anybody There?", JLabel.CENTER);
// Set the vertical alignment for label5 and also set a tool tip for it
label5.setVerticalAlignment(JLabel.TOP);
label5.setToolTipText("I have a tool tip with me!");
getContentPane().add(label1);
getContentPane().add(label2);
getContentPane().add(label3);
getContentPane().add(label4);
getContentPane().add(label5);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new JLabelDemo().setVisible(true));
}
}
How do I use min, max, avg and sum Projections?
The code below demonstration the use of Projections.min(), Projections.max(), Projections.avg() and Projections.sum().
package org.kodejava.hibernate;
import org.hibernate.SessionFactory;
import org.hibernate.Session;
import org.hibernate.HibernateException;
import org.hibernate.Criteria;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Projections;
import org.kodejava.hibernate.model.Track;
public class MinMaxAvgSumProjectionsDemo {
public static Session getSession() throws HibernateException {
String cfg = "hibernate.cfg.xml";
SessionFactory sessionFactory = new Configuration().configure(cfg)
.buildSessionFactory();
return sessionFactory.openSession();
}
public static void main(String[] args) {
try (Session session = getSession()) {
Criteria criteria = session.createCriteria(Track.class)
.setProjection(Projections.max("duration"));
Integer maxDuration = (Integer) criteria.uniqueResult();
System.out.println("Max Track Duration = " + maxDuration);
criteria.setProjection(Projections.min("duration"));
Integer minDuration = (Integer) criteria.uniqueResult();
System.out.println("Min Track Duration = " + minDuration);
criteria.setProjection(Projections.avg("duration"));
Double avgDuration = (Double) criteria.uniqueResult();
System.out.println("Avg Track Duration = " + avgDuration);
criteria.setProjection(Projections.sum("duration"));
Long totalDuration = (Long) criteria.uniqueResult();
System.out.println("Total Track Duration = " + totalDuration);
}
}
}
Maven Dependencies
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.6.9.Final</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
</dependency>
</dependencies>
How do I select a single record using Hibernate Criteria?
The Criteria.uniqueResult() method make it easier to query a single instance of a persistence object. When no persistence found this method will return a null value.
package org.kodejava.hibernate;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Restrictions;
import org.kodejava.hibernate.model.Genre;
public class UniqueResultExample {
public static Session getSession() throws HibernateException {
String cfg = "hibernate.cfg.xml";
SessionFactory sessionFactory = new Configuration().configure(cfg)
.buildSessionFactory();
return sessionFactory.openSession();
}
public static void main(String[] args) {
try (Session session = getSession()) {
Criteria criteria = session.createCriteria(Genre.class)
.add(Restrictions.eq("id", 1L));
// Convenience method to return a single instance that matches
// the query, or null if the query returns no results.
Object result = criteria.uniqueResult();
if (result != null) {
Genre genre = (Genre) result;
System.out.println("Genre = " + genre.getName());
}
}
}
}
Maven Dependencies
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.6.9.Final</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
</dependency>
</dependencies>
How do I set the fetch mode for Criteria association?
o set the fetching mode for association we can call the Criteria‘s setFetchMode() method. We can use the FetchMode.SELECT or FetchMode.JOIN.
package org.kodejava.hibernate;
import org.hibernate.*;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Restrictions;
import org.kodejava.hibernate.model.Record;
import java.util.List;
public class FetchModeDemo {
public static Session getSession() throws HibernateException {
String cfg = "hibernate.cfg.xml";
SessionFactory sessionFactory = new Configuration().configure(cfg)
.buildSessionFactory();
return sessionFactory.openSession();
}
@SuppressWarnings("unchecked")
public static void main(String[] args) {
try (Session session = getSession()) {
Criteria criteria = session.createCriteria(Record.class)
.setFetchMode("artist", FetchMode.SELECT)
.setFetchMode("label", FetchMode.SELECT)
.add(Restrictions.like("title", "The Beatles%"));
List<Record> records = criteria.list();
for (Record record : records) {
System.out.println("Recording = "
+ record.getTitle());
System.out.println("Artist = "
+ record.getArtist().getName());
}
}
}
}
Maven Dependencies
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.6.9.Final</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
</dependency>
</dependencies>
How do I count the total records using Projections?
The example below show how to get total row count using the Projections.rowCount(). The result of this query will be a single object of Integer that contains the result of executing an SQL select count (*) command.
package org.kodejava.hibernate;
import org.hibernate.SessionFactory;
import org.hibernate.Session;
import org.hibernate.HibernateException;
import org.hibernate.Criteria;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Projections;
import org.kodejava.hibernate.model.Track;
import java.util.List;
public class ProjectionsCountDemo {
public static Session getSession() throws HibernateException {
String cfg = "hibernate.cfg.xml";
SessionFactory sessionFactory = new Configuration().configure(cfg)
.buildSessionFactory();
return sessionFactory.openSession();
}
@SuppressWarnings("unchecked")
public static void main(String[] args) {
try (Session session = getSession()) {
Criteria criteria = session.createCriteria(Track.class)
.setProjection(Projections.rowCount());
List<?> result = criteria.list();
if (!result.isEmpty()) {
Long rowCount = (Long) result.get(0);
System.out.println("Total records: " + rowCount);
}
}
}
}
Maven Dependencies
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.6.9.Final</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
</dependency>
</dependencies>
