Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

How hibernate map integer types?

By default Hibernate maps,

a.   byte / Byte to the JDBC TINYINT type. If TINYINT is not supported by the underlying database, then SMALLINT is used.

b.   short / Short to the JDBC SMALLINT type.

c.    int / Integer to the JDBC INTEGER type.

d.   long / Long to the BIGINT JDBC type.

 

Let’s confirm the same with the following entity class.

@Entity
@Table(name = "integer_demo")
public class IntegerDemo {

@Id
private Integer id;

Byte byteVal;

Short shortVal;

Integer intVal;

Long longVal;

.........
.........
}

 

Find the below working application.

 

Step 1: Create new maven project ‘hibernate-integer-type-demo’.

 

Step 2: Update pom.xml with maven dependencies.

 

pom.xml

 

project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
modelVersion>4.0.0modelVersion>
groupId>com.sample.appgroupId>
artifactId>hibernate-integer-type-demoartifactId>
version>1version>

properties>
project.build.sourceEncoding>UTF-8project.build.sourceEncoding>

java.version>15java.version>
maven.compiler.source>${java.version}maven.compiler.source>
maven.compiler.target>${java.version}maven.compiler.target>

properties>

dependencies>
dependency>
groupId>org.postgresqlgroupId>
artifactId>postgresqlartifactId>
version>42.4.1version>
dependency>

dependency>
groupId>org.hibernategroupId>
artifactId>hibernate-coreartifactId>
version>6.1.2.Finalversion>
dependency>

dependency>
groupId>javax.persistencegroupId>
artifactId>javax.persistence-apiartifactId>
version>2.2version>
dependency>


dependencies>
project>

 

Step 3: Define IntegerDemo entity class.

 

IntegerDemo.java

 

package com.sample.app.entity;

import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;

@Entity
@Table(name = "integer_demo")
public class IntegerDemo {

@Id
private Integer id;

Byte byteVal;

Short shortVal;

Integer intVal;

Long longVal;

public IntegerDemo(Integer id, Byte byteVal, Short shortVal, Integer intVal, Long longVal) {
this.id = id;
this.byteVal = byteVal;
this.shortVal = shortVal;
this.intVal = intVal;
this.longVal = longVal;
}

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public Byte getByteVal() {
return byteVal;
}

public void setByteVal(Byte byteVal) {
this.byteVal = byteVal;
}

public Short getShortVal() {
return shortVal;
}

public void setShortVal(Short shortVal) {
this.shortVal = shortVal;
}

public Integer getIntVal() {
return intVal;
}

public void setIntVal(Integer intVal) {
this.intVal = intVal;
}

public Long getLongVal() {
return longVal;
}

public void setLongVal(Long longVal) {
this.longVal = longVal;
}

}

 

Step 4: Create hibernate.cfg.xml file under src/main/resources folder.

 

hibernate.cfg.xml

 

xml version='1.0' encoding='utf-8'?>
br> "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

hibernate-configuration>

session-factory>


property name="connection.driver_class">org.postgresql.Driverproperty>
property name="connection.url">jdbc:postgresql://127.0.0.1:5432/testproperty>
property name="connection.username">postgresproperty>
property name="connection.password">postgresproperty>


property name="show_sql">trueproperty>


property name="format_sql">trueproperty>


property name="use_sql_comments">falseproperty>

property name="dialect">org.hibernate.dialect.PostgreSQLDialectproperty>

property name="hbm2ddl.auto">updateproperty>


mapping class="com.sample.app.entity.IntegerDemo" />

session-factory>

hibernate-configuration>

 

Step 5: Define main application class.

 

App.java

 

package com.sample.app;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;

import com.sample.app.entity.IntegerDemo;

public class App {
private static final SessionFactory SESSION_FACTORY = buildSessionFactory();

private static SessionFactory buildSessionFactory() {
try {

final StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder()
.configure("hibernate.cfg.xml").build();

final Metadata metaData = new MetadataSources(standardRegistry).getMetadataBuilder().build();

return metaData.getSessionFactoryBuilder().build();

} catch (Throwable ex) {
throw new ExceptionInInitializerError(ex);
}

}

public static void main(final String args[]) {

IntegerDemo p1 = new IntegerDemo(1, (byte) 2, (short) 3, 4, 4l);

try (final Session session = SESSION_FACTORY.openSession()) {
session.beginTransaction();

session.persist(p1);

session.getTransaction().commit();

}

}
}

 

Total project structure looks like below.

 


 

Run App.java, you will see below messages in the console.

Aug 16, 2022 10:55:09 AM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate ORM core version 6.1.2.Final
Aug 16, 2022 10:55:09 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using built-in connection pool (not intended for production use)
Aug 16, 2022 10:55:09 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: Loaded JDBC driver class: org.postgresql.Driver
Aug 16, 2022 10:55:09 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001012: Connecting with JDBC URL [jdbc:postgresql://127.0.0.1:5432/test]
Aug 16, 2022 10:55:09 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {password=****, user=postgres}
Aug 16, 2022 10:55:09 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
Aug 16, 2022 10:55:09 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections
INFO: HHH10001115: Connection pool size: 20 (min=1)
Aug 16, 2022 10:55:10 AM org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl logSelectedDialect
INFO: HHH000400: Using dialect: org.hibernate.dialect.PostgreSQLDialect
Aug 16, 2022 10:55:10 AM org.hibernate.metamodel.internal.EntityInstantiatorPojoStandard resolveConstructor
INFO: HHH000182: No default (no-argument) constructor for class: com.sample.app.entity.IntegerDemo (class must be instantiated by Interceptor)
Aug 16, 2022 10:55:10 AM org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection
INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$
ConnectionProviderJdbcConnectionAccess@6242ae3b] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode.
Hibernate:

create table integer_demo (
id integer not null,
byteVal smallint,
intVal integer,
longVal bigint,
shortVal smallint,
primary key (id)
)
Aug 16, 2022 10:55:10 AM org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService
INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
Hibernate:
insert
into
integer_demo
(byteVal, intVal, longVal, shortVal, id)
values
(?, ?, ?, ?, ?)

 

Query PostgreSQL to confirm the table structure and content.

test-# \d
List of relations
Schema | Name | Type | Owner
--------+--------------+-------+----------
public | integer_demo | table | postgres
(1 row)

test-#
test-# \d+ integer_demo
Table "public.integer_demo"
Column | Type | Collation | Nullable | Default | Storage | Compression | Stats target | Description
----------+----------+-----------+----------+---------+---------+-------------+--------------+-------------
id | integer | | not null | | plain | | |
byteval | smallint | | | | plain | | |
intval | integer | | | | plain | | |
longval | bigint | | | | plain | | |
shortval | smallint | | | | plain | | |
Indexes:
"integer_demo_pkey" PRIMARY KEY, btree (id)
Access method: heap

test-#
test=# SELECT * FROM integer_demo;
id | byteval | intval | longval | shortval
----+---------+--------+---------+----------
1 | 2 | 4 | 4 | 3
(1 row)

You can download complete working application from this link.


 

Previous                                                    Next                                                    Home


This post first appeared on Java Tutorial : Blog To Learn Java Programming, please read the originial post: here

Share the post

How hibernate map integer types?

×

Subscribe to Java Tutorial : Blog To Learn Java Programming

Get updates delivered right to your inbox!

Thank you for your subscription

×