@Lob Annotation in Hibernate
In this tutorial, you will learn about simple implementation of @Lob annotation in hibernate example. This particular example were tested with MySQL database server environment and all programs and output has been shared in the same post.
The @Lob stands for Large Object. Sometimes we may have to store the large amount of character to specific column in the table (eg: Project Description, Product Description, Book Information and etc.). When we have the string field in a entity class, The hibernate framework will create the table with string fields as varchar datatype with maximum value of 255 (ie: bookDescription varchar(255)) by default. But they are may not be useful when we wants to store large information(more characters) to the specific column in a table.
If we add the @LOB annotation to string field it will be changed as longtext from the varchar datatype in table, then we can able to store the large amount of character to specific column. The following steps contains simple implementation of @Lob annotation in hibernate.
Project Structure
1) Getting the session from session factory
package com.dineshkrish.hibernate; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; /** * * @author Dinesh Krishnan * */ public class SessionProvider { private static Session session; private static Configuration configuration; private SessionProvider() { } static { configuration = new Configuration() .setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect") .setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver") .setProperty("hibernate.connection.url", "jdbc:mysql://localhost:3306/dineshkrish") .setProperty("hibernate.connection.username", "root") .setProperty("hibernate.connection.password", "") .setProperty("hibernate.show_sql", "true") .setProperty("hibernate.hbm2ddl.auto", "update") // Your Mapping Class .addAnnotatedClass(com.dineshkrish.hibernate.Book.class); } public static Session getSession() { SessionFactory factory = configuration.buildSessionFactory(); session = factory.openSession(); return session; } }
2) Entity class with @Lob annotation
package com.dineshkrish.hibernate; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Lob; @Entity public class Book { @Id private int bookId; private String bookName; @Lob private String bookDescription; public int getBookId() { return bookId; } public void setBookId(int bookId) { this.bookId = bookId; } public String getBookName() { return bookName; } public void setBookName(String bookName) { this.bookName = bookName; } public String getBookDescription() { return bookDescription; } public void setBookDescription(String bookDescription) { this.bookDescription = bookDescription; } }
3) Persisting the book entity to the database table
package com.dineshkrish.hibernate; import org.hibernate.Session; public class BookApplication { public static void main(String[] args) { // Defining the Object Book book = new Book(); // Setting the values for attributes book.setBookId(101); book.setBookName("Java Example Book"); // setting the large amount of characters for bookDescription field // it contains more than 1000+ characters book.setBookDescription("Lorem Ipsum is simply dummy text of the printing and " + "typesetting industry. Lorem Ipsum has been the industry's " + "standard dummy text ever since the 1500s, when an unknown printer " + "took a galley of type and scrambled it to make a type specimen book. " + "It has survived not only five centuries, but also the leap into electronic " + "typesetting, remaining essentially unchanged. It was popularised in the 1960s" + " with the release of Letraset sheets containing Lorem Ipsum passages, and more " + "recently with desktop publishing software like Aldus PageMaker " + "including versions of Lorem Ipsum. It is a long established fact " + "that a reader will be distracted by the readable content " + "of a page when looking at its layout. The point of using Lorem Ipsum " + "is that it has a more-or-less normal distribution of letters," + " as opposed to using 'Content here, content here', making it look " + "like readable English. Many desktop publishing packages and web page " + "editors now use Lorem Ipsum as their default model text, and a search " + "for 'lorem ipsum' will uncover many web sites still in their infancy. " + "Various versions have evolved over the years, sometimes by accident, " + "sometimes on purpose (injected humour and the like)."); Session session = SessionProvider.getSession(); session.beginTransaction(); // saving the object session.save(book); session.getTransaction().commit(); session.close(); } }
Download Source Code
you can download the entire source code here
Output
References
1. JPA API Documentation
2. @Lob Annotation Documentation
More from my site

Hello, folks, I am a founder of idineshkrishnan.com. I love open source technologies, If you find my tutorials are useful, please consider making donations to these charities.
No responses yet